问题宏(#define)“显示数字常量之前的预期标识符”错误,在iPad中

时间:2011-03-24 12:50:59

标签: iphone ipad macros

我正在开发一个应用程序,我需要定义几个将在多个类中使用的常量。我已经在一个.h文件中定义了所有常量(比如“constants.h”)并在myAppName_Prefix中导入了该文件.pch文件位于项目的“Other sources”文件夹中。使用这些常量的类正在编译时没有任何错误,但其他类,我声明了一些UISwipeGestureRecognizers,将错误称为“数字常量之前的预期标识符< / STRONG>” 这是显示错误的其中一个类的代码片段:

if (gesture.direction==UISwipeGestureRecognizerDirectionLeft)

我将常量定义为:

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

如果我在每个班级中单独定义它们,那么一切都工作正常。 任何人都可以建议我如何解决这个问题。

3 个答案:

答案 0 :(得分:4)

预处理代码后

if (gesture.direction==UISwipeGestureRecognizerDirectionLeft)

看起来像这样

if (gesture. 2==UISwipeGestureRecognizerDirectionLeft) 

这显然不是有效的代码。

解决方案是在#defines前放置一个唯一的命名空间字符串。

#define hariDirection 2

#define kDirection 2

或者imho是最好的解决方案:不要使用#define

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

这将做同样的事情,但它不会与其他方法和变量名冲突。

答案 1 :(得分:2)

我从gcc收到了同样的错误消息。

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

在检查我的变量名称是唯一的之后,我意识到我在使用常量的代码中有一个拼写错误。

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

简单的错误,但很难找到,因为gcc指向我#define语句

答案 2 :(得分:1)

使常量名称唯一:

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