通常、次のように、C++ の標準ライブラリ ヘッダーをextern
s の外側のグローバル名前空間に含めます。
#include <stdint.h>
int main() { }
しかし、標準ライブラリ ヘッダーを 1 つの中に含めると、何が起こるように指定されているのでしょうか? 例えば:
extern "C" {
#include <stdint.h>
}
int main() { }
また
extern "C++" {
#include <stdint.h>
}
int main() { }
どちらの場合も何が起こるかが指定されていますか、それとも実装定義または未定義ですか?
C++11 17.6.2.3p1 によると、C++ 標準ライブラリ ヘッダーextern "C++"
は<stdint.h>
. #include
C++11 17.6.2.2p3 は、ヘッダーは「外部宣言」の外でのみ d できると述べています。このフレーズは C++11 ではこの 1 か所にしか現れないため、ここに当てはまるかどうかはわかりません。(C99はこれについて何も言わないと思います。)
(私の特定のケースでは、C++ の標準ヘッダーを使用するオプションではない<c*>
ため、古い学校の C ヘッダーのセマンティクスのみを知る必要があります。)