3

私はこれらの行を見つけました:

#undef TAG
#define kTAG @"TestRegistration///: "
#define TAG kTAG

TAG が一度も使用されていない場合、なぜ TAG の#undef TAG前にTAG を使用するの#defineですか?

4

2 に答える 2

3

C の一部のバージョンでは、定義が前の宣言とまったく同じでない限り、マクロを再宣言することは違法です。

したがって、これは単にこの問題を防ぐための防御的なコーディングです (ただし、簡単なテストでは、この制限は Objective-C には現れないことが示されています)。

于 2013-01-15T02:11:15.567 に答える
2

マクロが以前に定義されていない場合、それを行う理由はありません。ただし、マクロが以前に定義されている可能性があると思われる場合は、最初に定義を解除することをお勧めします。これにより、コードの読者に、マクロの以前に設定された値 (存在する場合) を上書きする意図があることが明確になるためです。

マクロがすでに定義されているとは思わない場合は、最初に undef を使用しないでください。そうすれば、(驚くべきことに!) 既に定義されている場合、警告が表示されます。

于 2013-01-15T02:15:47.740 に答える