如何在GCC中禁用inline函数内static变量的警告(不使用-w参数)?
GCC下无需
-w参数禁用特定警告的实现 在GCC环境中,你可以直接使用#pragma GCC diagnostic ignored语法精准禁用指定警告,无需用全局关闭所有警告的-w参数。针对你的代码,修改后的完整版本如下:
#ifdef __clang__ #pragma GCC diagnostic ignored "-Wstatic-in-inline" #elif defined(__GNUC__) #pragma GCC diagnostic ignored "-Wstatic-in-inline" #endif static int data[]={1,2}; inline int test() { return data[0]; } int main() { return test() - 1; }
补充说明:
- GCC 4.6及以上版本支持
#pragma GCC diagnostic系列指令,如果你需要兼容更早版本的GCC,可改用编译选项-Wno-static-in-inline(注意这是全局禁用该警告,而非代码局部生效)。 - 显式判断
__GNUC__宏是为了避免其他编译器误执行该指令,若你的代码仅在GCC和Clang环境编译,直接用else块写入pragma也可行,但宏判断的写法更严谨。
内容的提问来源于stack exchange,提问作者Stan
相关产品推荐
相关产品推荐

