I am porting a Windows library to Android (with the GNU Standard C++ Library option, libstdc++-v3) and there seem to be numerous naming differences between the VC and GNU libraries, e.g.:
_stricmp is called strcasecmp instead_unlink is called unlink
_scalb is called scalbn
_finite is called isfinite
_isnan is called isnan
_itoa and itoa do not seem to exist in GNU C++atoi does exist, but not atoi64
The documentation of both VC and GNU libraries implies that they implement "ISO" C++, for example I can get a few warnings out of VC2008 for not using "ISO C++" names, such as this one: "warning C4996: 'itoa': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _itoa." Similarly GNU's manual says "The GNU Standard C++ Library v3 is an ongoing project to implement the ISO 14882 Standard C++ library".
So how do the libraries end up with these different names? How can I tell which names are more "standard"?
Also, is there an index of libstdc++-v3 anywhere, i.e. a simple list of all functions in the library? I can only find a manual and the "source documentation" which does not appear to offer a list of functions.
C Standard library functions or simply C Library functions are inbuilt functions in C programming. The prototype and data definitions of these functions are present in their respective header files. To use these functions we need to include the header file in our program.
The term "libc" is commonly used as a shorthand for the "standard C library", a library of standard functions that can be used by all C programs (and sometimes by programs in other languages). Because of some history (see below), use of the term "libc" to refer to the standard C library is somewhat ambiguous on Linux.
Library functions include standard input/output (stdio. h), string manipulation (string. h), math functions (math. h), and date and time functions (time.
The C standard library itself is stored in '/usr/lib/libc.
This has very little to do with the C++ standard library. It has more to do with C99 and POSIX.
strcasecmp is a POSIX function that libstdc++ happens to implement. msvcrt typically stays at arm's length from POSIX.unlink is similar—it's a POSIX function.scalbn is the name of the function in the C99 standard. MSVC doesn't support C99. However, scalbn is part of C++11, so I would expect it to show up in msvcrt eventually.isfinite and isnan are both C99.itoa is neither C99 nor POSIX. It's a strange beast that just shows up in the night.I'll also point out what several others have pointed out: it's technically more correct to prefix any functions in the standard library that are actually non-standard with an underscore. That's the reason for the proliferation of underscores in msvcrt.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With