Each element of the C++ standard library is declared or defined (as appropriate) in a header.168
The facilities of the C standard library are provided in the additional headers shown in Table 17.169
Except as noted in Clauses [library] through [thread] and Annex [depr], the contents of each header cname is the same as that of the corresponding header name.h as specified in the C standard library. In the C++ standard library, however, the declarations (except for names which are defined as macros in C) are within namespace scope of the namespace std. It is unspecified whether these names (including any overloads added in Clauses [language.support] through [thread] and Annex [depr]) are first declared within the global namespace scope and are then injected into namespace std by explicit using-declarations.
Names which are defined as macros in C shall be defined as macros in the C++ standard library, even if C grants license for implementation as functions. [ Note: The names defined as macros in C include the following: assert, offsetof, setjmp, va_arg, va_end, and va_start. — end note ]
Names that are defined as functions in C shall be defined as functions in the C++ standard library.170
Identifiers that are keywords or operators in C++ shall not be defined as macros in C++ standard library headers.171
[depr.c.headers], C standard library headers, describes the effects of using the name.h (C header) form in a C++ program.172
Annex K of the C standard describes a large number of functions, with associated types and macros, which “promote safer, more secure programming” than many of the traditional C library functions. The names of the functions have a suffix of _s; most of them provide the same service as the C library function with the unsuffixed name, but generally take an additional argument whose value is the size of the result array. If any C++ header is included, it is implementation-defined whether any of these names is declared in the global namespace. (None of them is declared in namespace std.)
Table 18 lists the Annex K names that may be declared in some header. These names are also subject to the restrictions of [macro.names].
Table
18— C standard Annex K names
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4