Qwe*_*tie 6 c++ c++-standard-library
我正在将一个Windows库移植到Android(使用GNU标准C++库选项,libstdc ++ - v3),VC和GNU库之间似乎有很多命名差异,例如:
_stricmp被称为strcasecmp替代_unlink 叫做 unlink_scalb 叫做 scalbn_finite 叫做 isfinite_isnan 叫做 isnan_itoa并且itoa似乎不存在于GNU C++中atoi 确实存在,但没有 atoi64VC和GNU库的文档意味着它们实现了"ISO"C++,例如我可以从VC2008中获得一些警告,因为没有使用"ISO C++"名称,例如:"警告C4996:'itoa':不推荐使用此项目的POSIX名称,而是使用符合ISO C++标准的名称:_itoa." 类似地,GNU的手册说"GNU标准C++库v3是一个实现ISO 14882标准C++库的持续项目".
那么图书馆如何最终得到这些不同的名字呢?如何判断哪些名称更"标准"?
另外,libstdc ++ - v3 的索引是否存在,即库中所有函数的简单列表?我只能找到一本手册和" 源文档 ",它似乎没有提供功能列表.
Joh*_*eek 12
这与C++标准库几乎没有关系.它更多地与C99和POSIX有关.
strcasecmp是libstdc ++碰巧实现的POSIX函数.msvcrt通常与POSIX保持一定的距离.unlink 是类似的 - 这是一个POSIX功能.scalbn是C99标准中的函数名称.MSVC不支持C99.但是,它scalbn是C++ 11的一部分,所以我希望它最终会出现在msvcrt中.isfinite并且isnan都是C99.itoa既不是C99也不是POSIX.这是一个奇怪的野兽,只是在夜晚出现.我还要指出其他几个人已经指出的内容:在标准库中使用下划线实际上是非标准的任何函数前缀在技术上更为正确.这就是msvcrt中下划线激增的原因.
| 归档时间: |
|
| 查看次数: |
3466 次 |
| 最近记录: |