C での 1 定義ルールのデコード
1 定義ルールは、コードの整合性を確保し、曖昧さを防ぎます。これは、翻訳単位内で、各変数、関数、クラス型、列挙型、およびテンプレートに対して単一の定義が存在する必要があると規定しています。
公式定義
One-Definition Rule の最終的なソースは C 標準のセクション 3.2 にあります:
影響
このルールは複数の定義を禁止します。単一の翻訳単位内で。ただし、定義が同一である限り、異なる翻訳単位での複数の出現は許可されます。
さらに、プログラム内で使用される非インライン関数およびオブジェクトについては、定義が 1 つだけ存在する必要があります。この定義は、現在のプログラム、標準ライブラリ、またはユーザー定義ライブラリに存在できます。必要に応じて、定義を暗黙的に生成することもできます。
インライン関数
インライン関数は、1 つの定義ルールの例外です。それらの実装がコンパイラですぐに利用できるようにするには、それらが使用されるすべての翻訳単位で定義する必要があります。
違反の結果
1 つの定義の無視このルールにより、コンパイル エラーや予期しないプログラム動作が発生する可能性があります。たとえば、同じ変数を複数定義すると、プログラムの実行中に競合が発生する可能性があります。
1 つの定義ルールに従うことで、プログラマはそのようなエラーを回避し、C コードの一貫性と信頼性を維持できます。
以上がC の 1 定義ルールとは何ですか? これに違反するとどうなりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。