簡體   English   中英

錯誤:#29:預期使用C表示

[英]error: #29: expected an expression in C

我的代碼包含

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

其中PIN_TAMPER再次是宏-

 #define PIN_TAMPER     0x00001000;

在頭文件之一中,它像在main()中那樣被調用

x = READ_TAMPER_PIN();  

它給出一個錯誤,指出“錯誤:#29:需要一個表達式”

我在這里犯了什么錯誤?

您的宏中的大括號和分號是錯誤的。 采用:

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

根據c99標准(§6.10.3#10)

形式的預處理指令

#define identifier lparen identifier-listopt)替換列表換行符

#定義標識符lparen ...)替換列表換行符

#define identifier lparen identifier-list,...)替換列表換行符

定義一個帶有參數的類函數宏,其語法類似於函數調用。 參數由標識符的可選列表指定,其范圍從標識符列表中的聲明擴展到終止#define預處理指令的換行符。 類似於函數的宏名稱的每個后續實例,后跟一個作為下一個預處理令牌引入的預處理令牌的序列,該序列由定義中的替換列表替換 (對宏的調用)。所替換的預處理令牌的序列為以匹配的預處理令牌終止 ,並跳過中間括號對左右一對預處理令牌。 在構成類似函數的宏的調用的預處理令牌序列中,換行符被視為普通的空白字符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM