2017-07-20 8 views
0
#define IS_PRODUCTION YES 
/*****************************************************************************/ 

#if (IS_PRODUCTION) /* IS PRODUCTION */ 

#define MAIN_SERVER_URL  @"http://www.xxxx.org/xxxx_live" 
#else 

#define MAIN_SERVER_URL  @"http://www.xxxx.org/xxxx_test" 

#endif 

IS_PRODUCTIONが真であるとは思われません。構文の何が間違っていますか?目的に合ったマクロに基づいてマクロを定義する

答えて

5

マクロは目的関数ではありません。プリプロセッサにはYESがありません。これは単なる未知のリテラルです(技術的には、YESはマクロかもしれませんが、プリプロセッサ条件では使用できません)。

それを修正するためのいくつかの方法:

#define IS_PRODUCTION 

#ifdef IS_PRODUCTION 
#if defined(IS_PRODUCTION) 

または

#define IS_PRODUCTION 1 

#if IS_PRODUCTION 

または

#define YES 1 
#define IS_PRODUCTION YES 

#if IS_PRODUCTION 

が、私はYESを再定義しないことをお勧めします。それは本当に良い考えではありません。

+0

'#if'は'#ifdef'よりはるかに優れています。 '#defdef IS_PRODUCTION 0'を実行すると'#ifdef'を使用すると予期せぬ結果が得られます。 – bbum

関連する問題