我的代码包含
#define READ_TAMPER_PIN() {((FIO2PIN & PIN_TAMPER) >> 12) ;}
其中PIN_TAMPER
再次是一个宏 -
#define PIN_TAMPER 0x00001000;
在其中一个头文件中,它在main()中调用,如
x = READ_TAMPER_PIN();
它会出错“错误:#29:期望表达式”
我在这里犯的可能是什么错误?
答案 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 调用宏)。替换的预处理序列 标记由匹配的)预处理标记终止,跳过 插入匹配的左右括号预处理对 令牌。在预处理令牌组成的序列中 调用类似函数的宏,新行被认为是正常的 白色空间。