2012-07-11 66 views
1

我與多個目標的一個項目工作, 我在構建設置一個預處理宏:

PRODUCT_NAME=\@\"$PRODUCT_NAME\" 
現在

在AppName的-Prefix.pch我已經定義了$ PRODUCT_NAME爲:

#define ACTIVE_PRODUCT PRODUCT_NAME 

如何檢查ACTIVE_PRODUCT是否等於一個字符串?

我想要做這樣的事情,例如

if ACTIVE_PRODUCT == @"Product 1" 
#define MY_VAR @"Test 1 
#endif 

if ACTIVE_PRODUCT == @"Product 2" 
#define MY_VAR @"Test 2 

所以我可以在我的代碼中使用MY_VAR取決於$ PRODUCT_NAME

請幫助! 問候, 比爾。

回答

1

我認爲有previous question for that,答案似乎是不可能的(請參閱comp.lang.c FAQ)。我試圖做的是儘快避免預處理器,將所有處理都移至Objective-C。因此,而不是#defining你的變量,你可以設置一個普通的Objective-C的變量,並繼續在Objective-C處理:

static NSString *const ProductName = /* create string from PRODUCT_NAME */; 

及更高版本:

NSString *const MyVar = [ProductName isEqualToString:…] ? @"Foo" : @"Bar"; 

當然,這是假設你只需要MyVar在源代碼中,不是像plists那樣的資源。

+0

謝謝,yep似乎不可能。謝謝! :d – Nimrod7 2012-07-11 08:06:03

1

好,因爲比較字符串似乎不可能我用下面的外觀圖釋:

在我定義的產品1 = \ @ \ 「$ PRODUCT_NAME \」 ....產品2 = \ @ \ 「$ PRODUCT_NAME \」 每個目標等

然後以應用程序名稱prefix.pch我做了以下內容:

#if defined (PRODUCT1) 
#define MY_VAR @"Test 1" 
.... 
#endif 

#if defined (PRODUCT2) 
#define MY_VAR @"Test 2" 
... 
#endif 

這解決了這個問題在我的情況。 任何其他方式也將不勝感激。

相關問題