為什麼編譯器說這個宏函數需要一個右括號?

該死的蔬菜

代碼如下。編譯器說“預期為 )”,但我不明白: ( 和 ) 是匹配的。我做錯了什麼?

在此處輸入圖片說明

#define CR_SUCCESS 0

#define EXIT_IF_FAILS(varResult, callString) \
    (\
        varResult = callString; \
        if(varResult != CR_SUCCESS) \
        { \
            return -1; \
        } \
    )

int testFunction(int a, int b)
{
    return -1;
}

int main()
{
    int result;
    EXIT_IF_FAILS(result, testFunction(1, 2));

}
阿舍普勒

擴大,你的main樣子

int main()
{
    int result;
    (
        result = testFunction(1, 2);
        if(result != CR_SUCCESS)
        {
            return -1;
        }
    )
}

這是無效的,因為您不能在語句周圍使用括號。

對於當您想要一個像語句一樣的宏時可能會做的一些事情,請參閱 C++ 常見問題解答“應該如何處理具有多行的宏?”

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

為什麼接口中的這個箭頭函數不能編譯?

NodeJS 在編譯時似乎運行了一個導出的函數——為什麼?

為什麼這個簡單的python函數只能工作一次

為什麼java編譯器不能識別for循環中變量的這個初始化?

為什麼這個奇怪的c++模板語法編譯成功?

為什麼這個 c 程序不能編譯階乘

為什麼這個自定義反向函數的行為很奇怪?

為什麼在 Python 中用參數調用這個“構造函數”?

R 為什麼我必須為它自己分配一個形式參數變量才能使這個函數工作?

這個函數有什麼作用?我收到一個 AttributeError

為什麼一個除數函數比另一個快 3000%?

為什麼這兩個等效函數的輸出不同?

為什麼這個函數只是被跳過而不是被調用?

為什麼這個 for 循環起作用而函數不起作用?

為什麼JS在babel腳本中找不到這個函數?

在 C 中,為什麼我有““s”:初始化需要一個大括號括起來的初始化列表”?

我需要一個 handleDelete 過濾器函數來響應 onclick 按鈕。我可以為一個對像數組編寫代碼,但這是一個對像對象

為什麼我的 Student 類中的 add_student 方法不起作用(據說需要額外的參數,但它只需要一個)?

為什麼我的另一個文件中的 void 函數沒有在這個 C 程序中運行?

為什麼總是出現這個錯誤,我試圖在函數運行時將一個角色隱藏起來

為什麼是數量++;與打印(數量++)不同;?這是一個陷阱嗎?

為什麼Go編譯器不能推導出一個結構體實現了一個接口

為什麼在 mdn 的這個示例中,每個內部函數都將先前的(父)函數參數作為輸入?

為什麼 Java 編譯器會考慮將 2 個沒有相同包聲明的文件放在同一個包中?

為什麼這個參數構造函數只適用於多行定義?

為什麼 Redux Saga yield 調用返回一個函數,而不是數據?

一個函數需要什麼才能使用堆疊的 NumPy 參數?

如果標準 golang big.Int 函數接受兩個參數並返回一個值,為什麼它使用接收器?

為什麼這兩個非常相似的異步 Rust 函數之一會觸發線程安全錯誤?