ホームページ > バックエンド開発 > C++ > C の関数とヘッダーは、C の `std::` 名前空間またはグローバル名前空間から使用する必要がありますか?

C の関数とヘッダーは、C の `std::` 名前空間またはグローバル名前空間から使用する必要がありますか?

Susan Sarandon
リリース: 2024-11-14 19:00:02
オリジナル
886 人が閲覧しました

Should C functions and headers be used from the `std::` namespace or the global namespace in C  ?

C での C ヘッダーの使用: 名前空間またはグローバル スコープ?

C では、ヘッダー ファイルを変更することで C の関数とヘッダーにアクセスできます。名前 (例: stdio.h から cstdio、stdlib.h から cstdlib)。ただし、C コードのこれらのヘッダーに std:: 名前空間の関数を使用するか、グローバル名前空間の関数を使用するかという問題が生じます。

C の名前空間とグローバル スコープ

C 11 標準によれば、「.h」拡張子を持つすべての C ヘッダーは、その名前がグローバル名前空間と名前空間 std の両方に配置されているかのように動作します。これらの名前が最初に std:: 名前空間で宣言されてグローバル名前空間に挿入されるか、その逆かは未指定のままです。

推奨アプローチ

将来のバージョンとの互換性を確保するためC リビジョンを変更し、潜在的なあいまいさを取り除くには、「cname」ヘッダーを使用し、std:: 名前空間内で関数を宣言および定義することをお勧めします。古い「.h」ヘッダーの使用は非推奨であり、今後のリビジョンで削除される予定です。

サンプル コード

次のコード スニペットを推奨します:

#include <cstdio>

int main() {
    std::printf("Hello world\n");
}
ログイン後にコピー

以上:

#include <stdio.h>

int main() {
    printf("Hello world\n");
}
ログイン後にコピー

結論

C の C 関数とヘッダーには std:: とグローバル名前空間の両方を使用できますが、推奨されるアプローチは、将来の C リビジョンとの一貫性を確保し、潜在的な問題を回避するために、「cname」ヘッダーを組み込み、std:: 名前空間の宣言と定義を使用することです。

以上がC の関数とヘッダーは、C の `std::` 名前空間またはグローバル名前空間から使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート