错误:#29:期望C中的表达式

时间:2013-07-20 05:08:09

标签: c embedded arm keil arm7

我的代码包含

#define READ_TAMPER_PIN()   {((FIO2PIN & PIN_TAMPER) >> 12) ;}

其中PIN_TAMPER再次是一个宏 -

 #define PIN_TAMPER     0x00001000;

在其中一个头文件中,它在main()中调用,如

x = READ_TAMPER_PIN();  

它会出错“错误:#29:期望表达式”

我在这里犯的可能是什么错误?

2 个答案:

答案 0 :(得分:3)

宏中的大括号和分号是错误的。使用:

#define READ_TAMPER_PIN()   ((FIO2PIN & PIN_TAMPER) >> 12)

答案 1 :(得分:0)

根据c99标准(§6.10.3#10)

表单

的预处理指令

#define 标识符lparen identifier-listopt)replacement-list new-line

#define 标识符lparen ...)replacement-list new-line

#define 标识符lparen标识符列表,...)replacement-list new-line

  

定义类似函数的宏,带有参数,类似   语法上的函数调用。参数由。指定   可选的标识符列表,其范围从它们的范围扩展   在标识符列表中声明,直到换行符   终止 #define 预处理指令。随后每一次   类似函数的宏名称的实例后跟作为下一个   预处理令牌引入了预处理令牌的序列   它被定义中的替换列表取代(an   调用宏)。替换的预处理序列   标记由匹配的预处理标记终止,跳过   插入匹配的左右括号预处理对   令牌。在预处理令牌组成的序列中   调用类似函数的宏,新行被认为是正常的   白色空间。