6 Stimmen

Warum sind die Namen der Standardbibliotheksfunktionen unter Windows und Linux unterschiedlich?

Ich portiere eine Windows-Bibliothek auf Android (mit der GNU Standard C++ Library Option, libstdc++-v3) und es scheint zahlreiche Namensunterschiede zwischen den VC- und GNU-Bibliotheken zu geben, z.B.:

  • _stricmp heißt strcasecmp stattdessen
  • _unlink heißt unlink
  • _scalb heißt scalbn
  • _finite heißt isfinite
  • _isnan heißt isnan
  • _itoa y itoa scheinen in GNU C++ nicht zu existieren
  • atoi gibt es zwar, aber nicht atoi64

Die Dokumentation sowohl der VC- als auch der GNU-Bibliotheken impliziert, dass sie "ISO"-C++ implementieren. Ich kann zum Beispiel einige Warnungen von VC2008 erhalten, wenn ich keine "ISO C++"-Namen verwende, wie zum Beispiel diese: "Warnung C4996: 'itoa': Der POSIX-Name für dieses Element ist veraltet. Verwenden Sie stattdessen den ISO C++-konformen Namen: _itoa." Ähnlich heißt es im GNU-Handbuch: "The GNU Standard C++ Library v3 is an ongoing project to implement the ISO 14882 Standard C++ library".

Wie kommt es also dazu, dass die Bibliotheken diese unterschiedlichen Namen tragen? Woran kann ich erkennen, welche Namen eher "Standard" sind?

Gibt es außerdem eine Index von libstdc++-v3, d.h. eine einfache Liste aller Funktionen in der Bibliothek? Ich kann nur eine Handbuch und die " Quellendokumentation ", die keine Liste von Funktionen zu bieten scheint.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X