参数化警告沉默宏麻烦

parameterized warning silencing macro trouble

本文关键字:麻烦 沉默 警告 参数      更新时间:2023-10-16

以下未编译:

#define SUPPRESS(w) _Pragma("GCC diagnostic ignored " ## w)
SUPPRESS("-Wuseless-cast")
int main() {
    int a = (int)4;
    return a;
}

这是错误:

error: pasting ""GCC diagnostic ignored "" and ""-Wuseless-cast"" does not give a valid preprocessing token

我该如何工作?

问题是 _Pragma想要拥有一个像so

这样
_Pragma("GCC diagnostic ignored "-Wuseless-cast"")

因此,诀窍是在SUPPRESS的调用和_Pragma的调用之间添加另一层弦乐,如以下

#define xSUPPRESS(w) _Pragma(#w)
#define SUPPRESS(w) xSUPPRESS(GCC diagnostic ignored w)
SUPPRESS("-Wuseless-cast")

请参阅IT 在这里在行动中。