2011-12-23 121 views
35

同じCソースファイルに#ifndef ABC#if !defined (ABC)があります。Cの "ifndef"と "if!defined"の違いは?

微妙な違いはありますか? (スタイルの問題の場合、誰かが同じファイルでそれらを使用する理由)

答えて

34

いいえ、そのように使用される二つの違いはありません。後者の形態(defined()を使用)は、最初の#ifまたは次の条件の1つがより複雑な試験を必要とする場合に有用である。 #ifdefは動作しますが、その場合は#if defined()を使用するとより明確になる場合があります。たとえば、複数のマクロが定義されているかどうか、またはマクロが特定の値と等しいかどうかをテストする必要がある場合などです。

(ファイル内での両方を使用する)分散は、上記の使用法の特定の微妙さに依存する可能性があります。

3

あなたが指定したコンテキストでは、それらは同じです。ただ1つのマクロ識別子の存在を確認しているだけです。

ただし、#if形式を使用すると式を評価することができます。これは便利な方法です。

関連する問題