web-dev-qa-db-ja.com

'if not'のObjective-Cプリプロセッサディレクティブ

次のようなプリプロセッサディレクティブの使用方法を理解しています。

#if SOME_VARIABLE
    // Do something
#else
    // Do something else
#endif

しかし、SOME_VARIABLEでない場合に何かを実行したい場合はどうすればよいでしょうか。

明らかに私はまだこれを行うことができました:

#if SOME_VARIABLE

#else
    // Do something else
#endif

。 。 。空の場合は残しますが、行う方法はありますか?

#if not SOME_VARIABLE
   // Do something
#endif

Appleのドキュメント here はそうではないことを示唆していますが、これは非常に基本的なニーズのようです。

基本的に私はプリプロセッサと同等のことをしたい:

if(!SOME_VARIABLE)(
{
   // Do Something
}
40
Undistraction

あなたは試すことができます:

#if !(SOME_VARIABLE)
   // Do something
#endif
83
CarlJ

何かが定義されているかどうかを確認しようとしていますか?はいの場合、次のことを試すことができます。

_#ifndef SOME_VARIABLE_

または

#if !defined(SOME_VARIABLE)

20
xuzhe

Appleドキュメンテーション( If-The C Preprocessor )は正しいものであり、これはCプリプロセッサステートメントが黎明期から続いている方法です。同じドキュメントでできることは、ゼロまたはゼロ以外の値に評価される式を作成し、それを使用することです。

TARGET_IPHONE_SIMULATORはプラットフォームに応じてTRUEまたはFALSEとして定義されるため、Meccanの答えは正しいので、式はゼロまたはゼロ以外の量のいずれかに評価されます。

一般に、これらのマクロ(#ifなど)は、シンボルが定義されているかどうかに基づいて、包含または除外するために使用されます。その使用例では、プリプロセッサには#ifdef#ifndefがあり、これまで歴史的に最も重要なケースとして受け入れられてきたものをカバーしています。

また、これらのステートメントの主題は、(#defineを介して)プリプロセッサで定義された他のシンボルのみである可能性があるため、この制限は妥当です。

4
Peter M