ホームページ  >  記事  >  バックエンド開発  >  C で `` を使用すると、`p​​rintf` が `std::printf` と `printf` の両方で機能するのはなぜですか?

C で `` を使用すると、`p​​rintf` が `std::printf` と `printf` の両方で機能するのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-26 05:43:30517ブラウズ

Why does `printf` work in both `std::printf` and `printf` when using `` in C  ?

cstdio Stdio.h 名前空間

の C リファレンス ドキュメントでは、すべてのライブラリ要素が std 内に存在すると主張しています。名前空間。ただし、実験では std::printf と printf 関数呼び出しの両方が機能することが示されています。これは、C ヘッダーがシンボル名を std 名前空間とグローバル名前空間の両方にインポートすることを示していますか?

回答

を含むシンボル名を std 名前空間にインポートし、場合によってはグローバル名前空間にもインポートします。対照的に、 を含むシンボル名をグローバル名前空間にインポートし、std 名前空間にも組み込む可能性があります。

この動作は、すべての C スタイルのヘッダーに拡張されます。 C 11 標準 (付録 D) によれば、C 標準ライブラリ ヘッダーは次のように動作します。

"2 すべての C ヘッダーは、それぞれ name.h 形式の名前を持ち、それぞれの名前が配置されているかのように動作します。対応する cname ヘッダーによって標準ライブラリの名前空間にある名前は、グローバル名前空間のスコープ内に配置されます。

したがって、これらの名前が最初に名前空間 std 内で宣言または定義され、その後、次の方法でグローバル名前空間に注入されるかどうかは不明のままです。 using 宣言、またはその逆。

以上がC で `` を使用すると、`p​​rintf` が `std::printf` と `printf` の両方で機能するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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