宏定義錯誤:error: expected ‘;’ before ‘if’的解決方案

    今天寫了個宏來處理函數返回的結果,結果編譯後總是提示:
    iplb_core.c:21:33: error: expected ‘;’ before ‘if’
    #define CORE_IF_ERROR(res,estr) if((res)<0){error_print("error:%s\n",(estr));return -1;}
但是宏的寫法明明是沒有問題的,按理不應該處錯誤的。我又找了會錯,發現這句錯誤後邊還跟着一句:
    iplb_core.c:202:2: note: in expansion of macro ‘CORE_IF_ERROR’
馬上定位到202行,原來是這行的前一行忘記加“;”了。
    總結一下,gcc在預編譯的時候會把宏所在語句的錯誤歸結到宏的定義上,讓人誤以爲是宏定義錯了,其實是使用宏的語句有錯誤。
發佈了47 篇原創文章 · 獲贊 20 · 訪問量 108萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章