我注意到GCC的诊断实用程序只支持一些警告。
这有效:
#pragma GCC diagnostic error "-Wconversion"
这失败了:
#pragma GCC diagnostic error "-Wframe-larger-than=32"
...错误:
error: unknown option after '#pragma GCC diagnostic' kind [-Werror=pragmas]
#pragma GCC diagnostic error "-Wframe-larger-than"
..当作为命令行参数传递时,这两个参数都适用于GCC。
是否有GCC diagnostic
pragma支持警告的文档?
答案 0 :(得分:3)
我怀疑你在GCC中发现了这个特定选项的错误。
使用以下基本示例(参见 live ):
#include <stdio.h>
int main(void)
{
int i = 4;
printf("%d\n", i);
return 0;
}
用-Wframe-larger-than=2
编译的显然有一条警告信息:
警告:16字节的帧大小大于2个字节 [-Wframe-较大比=]
然而,-Werror=
的组合(即完整标志为-Werror=frame-larger-than=2
),它表现得很奇怪:
错误:16字节的帧大小大于1个字节 [-Werror =帧较大比=]
更奇怪的是,它看起来值完全被忽略,因为-Werror=frame-larger-than=64
仍会产生相同的错误,尽管满足阈值(即16 <64)
(旁注:GCC版本为4.9.0)
我认为-Werror=
选项处理与#pragma GCC diagnostic error
有某种联系,因为以下似乎有效:
#include <stdio.h>
#pragma GCC diagnostic error "-Wframe-larger-than="
int main(void)
{
int i = 4;
printf("%d\n", i);
return 0;
}
返回错误:
错误:16字节的帧大小大于1个字节 [-Werror =帧较大比=]
但它没有配合任何价值,例如:
#pragma GCC diagnostic error "-Wframe-larger-than=2"
产生
警告:'#pragma GCC diagnostic'之后的未知选项 [-Wpragmas]
答案 1 :(得分:3)