C でのプリプロセッサ定義とキーワード再定義
C プリプロセッサ ディレクティブの領域では、再定義の標準準拠に関して激しい議論が巻き起こりました。 #define を使用したキーワード。準拠したプリプロセッサはそのような行為を許可できますか?
プリプロセッサとキーワード
C 標準によれば、§17.4.3.1.1/2 は、キーワードの再定義を明示的に禁止しています。標準ライブラリヘッダーを含む翻訳単位。この制限により、標準ライブラリ コンポーネントの整合性が確保されます。
C 0x とキーワードの再定義
当初、C 0x (現在は廃止された C 11 の中間) であると考えられていました。 ) この禁止を強化して、キーワードの再定義を完全に禁止します (§17.6.3.3.1)。ただし、その後、C 0x のルールは変更されていないことが明らかになりました。この改訂は、一部の人に不注意で誤解を与えたテキストの再配置から生じたものと考えられます。
標準への準拠とキーワードの再定義
現在の標準を考慮すると、キーワードを再定義する C プログラムは使用できません。規格に準拠しているとみなされます。このようなプログラムは、キーワードの再定義に対する制限に違反することにより、言語とその組み込みセマンティクスの完全性を侵害します。
以上が#define を使用した C キーワードの再定義は標準に準拠していますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。