Estoy portar una biblioteca de Windows para Android (con la GNU C++ estándar opción de biblioteca, libstdC++ - v3) y parece que hay numerosas diferencias de nombre entre las bibliotecas VC y GNU, por ejemplo:¿Por qué los nombres de funciones de biblioteca estándar son diferentes entre Windows y Linux?
_stricmp
se llamastrcasecmp
en lugar_unlink
se llamaunlink
_scalb
se llamascalbn
_finite
se llamaisfinite
_isnan
se llamaisnan
_itoa
yitoa
no parecen existir en GNU C++atoi
sí existe, pero noatoi64
La documentación de ambas bibliotecas VC y GNU implica que implementan "ISO "C++, por ejemplo, puedo obtener algunas advertencias del VC2008 por no usar nombres" ISO C++ ", como este:" advertencia C4996: 'itoa': el nombre POSIX para este elemento está en desuso. En su lugar, utilice el nombre conforme a ISO C++: _itoa. "De manera similar, el manual de GNU dice:" La biblioteca GNU Standard C++ v3 es un proyecto en curso para implementar la biblioteca estándar ISO 14882 C++ ".
Entonces, ¿cómo terminan las bibliotecas con estos ?? diferentes nombres ¿Cómo puedo saber qué nombres son más "estándar"
Además, ¿hay una índice de de libstdC++ - v3 en cualquier lugar, es decir, una simple lista de todas las funciones de la biblioteca sólo puedo encontrar un manual y el "source documentation" que no parece ofrecer una lista de funciones.
Varios de estos no están en la biblioteca estándar de C++, por lo que en esos casos, ninguno es "estándar". –
Microsoft intenta ser coherente al nombrar sus funciones no estándar con un subrayado inicial. –
'_atoi64' en MSVC se llama' atoll' en GCC. – dan04