Почему имена стандартных библиотечных функций различаются в Windows и Linux?

I я переношу библиотеку Windows на Android (с опцией библиотеки GNU Standard C++, libstdc++-v3), и, похоже, существуют многочисленные различия в именах между библиотеками VC и GNU, например:

  • _stricmpназывается strcasecmpвместо
  • _unlinkназывается unlink
  • _scalbназывается scalbn
  • _finiteназывается isfinite
  • _isnanназывается isnan
  • _itoaи itoaпохоже, не существует в GNU C++
  • atoiсуществует, но не atoi64

Документация библиотек VC и GNU подразумевает, что они реализуют "ISO" C++, например, я могу получить несколько предупреждений от VC2008 за неиспользование имен "ISO C++", таких как как этот: «предупреждение C4996: 'itoa': имя POSIX для этого элемента устарело. Вместо этого используйте имя, совместимое с ISO C++: _itoa». Точно так же в руководстве GNU говорится: «Стандартная библиотека C++ GNU v3 - это текущий проект по реализации стандартной библиотеки C++ ISO 14882».

Так как же библиотеки получают такие разные имена? Как я могу определить, какие имена более «стандартны»?

Кроме того, есть ли где-нибудь индексlibstdc++-v3, то есть простой список всех функций в библиотеке? Я могу найти только руководствои "исходную документацию", в которых нет списка функций.

6
задан Qwertie 27 March 2012 в 19:34
поделиться