2011-03-24 67 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声明

相关问题