0

頭を抱え込もうとしたが諦めた。Mike Banahan による C の本(セクション 7.3.7 条件付きコンパイル)から引用した以下の説明をお願いします。何度やっても「構成するトークン列……」以降の部分が掴めない。簡単な言葉で教えてください

1)「定義された」接頭辞とは正確には何ですか、そして

2) 名前や C のキーワードでさえもゼロになる (sizeof への紛らわしい参照を忘れないでください) とは?

少しのコードでの説明は非常に役に立ちます。ありがとうございました。

#if および #elif コンストラクトは、単一の整数定数式を引数として取ります。プリプロセッサの整数定数式は、キャスト演算子を含めてはならないことを除いて、他の整数定数式と同じです。定数式を構成するトークン シーケンスはマクロ置換されます。ただし、defined で始まる名前は展開されません。このコンテキストでは、式defined NAMEまたはdefined ( NAME )は、 NAMEが現在定義されている場合は 1 に評価され、定義されていない場合は 0 に評価されます。C キーワードを含む、式内のその他の識別子値 0 に置き換えられます。次に、式が評価されます。キーワードを置き換えることは、これらの式で sizeof を使用して、通常期待する結果を得ることができないことを意味します。

4

2 に答える 2