我移植一个Windows库到Android(与GNU标准C++库选项,的libstdC++ - v3)和那里似乎是VC和GNU库之间的许多命名的差异,例如:为什么Windows和Linux之间的标准库函数名称不同?
_stricmp
被称为strcasecmp
而不是_unlink
被称为unlink
_scalb
被称为scalbn
_finite
被称为isfinite
_isnan
被称为isnan
_itoa
和itoa
似乎并没有在GNU C++存在atoi
确实存在,但不是atoi64
两个VC和GNU库的文档意味着他们实施“ISO “例如,我可以从VC2008中获得一些警告,不使用”ISO C++“名称,例如:”警告C4996:'itoa':不推荐使用此项目的POSIX名称。相反,使用ISO C++一致性名称:_itoa。“同样,GNU的手册中说”GNU标准C++库v3是一个正在进行的项目,用于实现ISO 14882标准C++库“
那么库如何结束?不同的名字,我怎么知道哪个名字更“标准”
此外,有没有一个指数的libstdC++ - V3的任何地方,即库中的所有功能,一个简单的列表,我只能找到一个manual和“source documentation”,它似乎没有提供功能列表。
其中有几个不在C++标准库中,所以在这些情况下,都不是“标准”。 – 2012-03-27 19:37:26
微软正在试图通过将其非标准功能命名为前导下划线来保持一致。 – 2012-03-27 19:46:14
MSVC中的'_atoi64'在GCC中被称为'atoll'。 – dan04 2012-03-29 23:35:30