ホームページ >バックエンド開発 >C++ >stdio.h がシンボルをグローバル名前空間にインポートするのに、cstdio はシンボルを std 名前空間にインポートするのはなぜですか?

stdio.h がシンボルをグローバル名前空間にインポートするのに、cstdio はシンボルを std 名前空間にインポートするのはなぜですか?

DDD
DDDオリジナル
2024-10-31 02:01:29671ブラウズ

Why does cstdio import symbols into the std namespace while stdio.h imports them into the global namespace?

cstdio stdio.h 名前空間

C では、標準 C ライブラリは std 名前空間内で使用できます。ただし、cstdio や stdio.h などのヘッダーを使用するときによくある誤解が生じます。

cstdio を含めると、シンボル名が std 名前空間にインポートされます。ただし、stdio.h をインクルードすると、シンボル名がグローバル名前空間にインポートされます。これは、cstdio を含む C ヘッダーが、std 名前空間に配置された名前がグローバル名前空間にも配置されているかのように動作するためです。

例:

次のコードstd::printf 関数を使用します。この関数は、std 名前空間内で定義されています:

<code class="cpp">std::printf("hello world"); // Correct</code>

対照的に、次のコードは、グローバル名前空間で定義されている printf 関数を使用します:

<code class="cpp">printf("hello world"); // Correct</code>

cstdio を含めると、std 名前空間で printf 関数が使用可能になる可能性もありますが、これは保証されていないことに注意してください。両方の名前空間での可用性を確保するには、目的の名前空間に対応するヘッダーを使用することをお勧めします。

  • cstdio - std 名前空間で定義された名前
  • stdio.h - グローバルで定義された名前名前空間

以上がstdio.h がシンボルをグローバル名前空間にインポートするのに、cstdio はシンボルを std 名前空間にインポートするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。