2011-03-24 58 views
6

我正在開發一個應用程序,我需要定義幾個常量,將用於多個類。我已經定義了所有常量在一個.h文件(稱爲「constants.h」)中,並將該文件導入位於項目的「其他源」文件夾中的myAppName_Prefix.pch文件中。使用這些常量的類正在編譯時沒有任何錯誤,但其他類我聲明一些UISwipeGestureRecognizers,扔誤差 這的代碼從所述類別中的一個代碼段,其示出了錯誤「預期標識符數字常數之前」:問題與宏(#define)「在數字常量之前顯示預期的標識符」錯誤,在iPad中

if (gesture.direction==UISwipeGestureRecognizerDirectionLeft) 

我定義我的常量:

#define heading 1 
#define direction 2 
#define statement 3 
#define refLink 4 
#define correctResponse 5 
#define incorrect1Response 6 

,如果我在每個班單獨那麼一切都將它們定義爲工作的罰款。 任何人都可以請建議我一種方法如何解決這個問題。

回答

4

預處理代碼後

if (gesture.direction==UISwipeGestureRecognizerDirectionLeft) 

看起來像這樣

if (gesture. 2==UISwipeGestureRecognizerDirectionLeft) 

,這顯然是不合法的代碼。

解決的辦法是在#defines前面放一個唯一的命名空間字符串。

#define hariDirection 2 

#define kDirection 2 

或者恕我直言最好的解決辦法:不要使用#define

typedef enum { 
    heading = 1, 
    direction, 
    statement, 
    refLink, 
    correctResponse, 
    incorrect1Response, 
} MyDirection; 

這將做同樣的事情,但它不會有衝突其他方法和變量名稱。

1

讓您的常量名是唯一的:

#define kHeading 1 
#define kDirection 2 
#define kStatement 3 
#define kRefLink 4 
#define kCorrectResponse 5 
#define kIncorrect1Response 6 
2

我得到了來自gcc的同樣的錯誤信息。

error: expected ')' before numeric constant 
#define UNIQUE_NAME 0 

檢查我的變量名稱是獨一無二的,我意識到,我有一個錯字在其中正在使用的固定代碼點。

#define UNIQUE_NAME 0 
//... 
if (test_variable UNIQUE_NAME) { //missing == 
//... 
} 

簡單的錯誤,但比較難找到,因爲gcc指着我對#define聲明

相關問題