ホームページ > バックエンド開発 > C++ > C の 1 定義ルールとは何ですか? これに違反するとどうなりますか?

C の 1 定義ルールとは何ですか? これに違反するとどうなりますか?

Linda Hamilton
リリース: 2024-12-26 03:36:10
オリジナル
1019 人が閲覧しました

What is the One-Definition Rule in C   and What Happens if it's Violated?

C での 1 定義ルールのデコード

1 定義ルールは、コードの整合性を確保し、曖昧さを防ぎます。これは、翻訳単位内で、各変数、関数、クラス型、列挙型、およびテンプレートに対して単一の定義が存在する必要があると規定しています。

公式定義

One-Definition Rule の最終的なソースは C 標準のセクション 3.2 にあります:

  • "No翻訳単位には、変数、関数、クラス型、列挙型、またはテンプレートの複数の定義が含まれなければなりません。

影響

このルールは複数の定義を禁止します。単一の翻訳単位内で。ただし、定義が同一である限り、異なる翻訳単位での複数の出現は許可されます。

さらに、プログラム内で使用される非インライン関数およびオブジェクトについては、定義が 1 つだけ存在する必要があります。この定義は、現在のプログラム、標準ライブラリ、またはユーザー定義ライブラリに存在できます。必要に応じて、定義を暗黙的に生成することもできます。

インライン関数

インライン関数は、1 つの定義ルールの例外です。それらの実装がコンパイラですぐに利用できるようにするには、それらが使用されるすべての翻訳単位で定義する必要があります。

違反の結果

1 つの定義の無視このルールにより、コンパイル エラーや予期しないプログラム動作が発生する可能性があります。たとえば、同じ変数を複数定義すると、プログラムの実行中に競合が発生する可能性があります。

1 つの定義ルールに従うことで、プログラマはそのようなエラーを回避し、C コードの一貫性と信頼性を維持できます。

以上がC の 1 定義ルールとは何ですか? これに違反するとどうなりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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