使用GCC,我能否按函数禁用-Wframe-larger-than选项?

9
使用GCC,是否可以指定一组函数,免受-Wframe-larger-than的影响?(例如,main函数)
3个回答

11

它可以按函数为单位工作。从文档中得知:“GCC跟踪每个编译指示的位置,并根据源文件中该点的状态发出诊断。因此,在一行之后出现的编译指示不会影响由该行引起的诊断。” - Carl Norum
2
@Carl:实际上,那些文档是针对当前的开发版本(4.6),所以不适用于4.5,请查看我提供的链接。 - Mark Loeser
哦,好的。实际上我没有在那个文档上看到任何版本控制。感谢您的澄清。 - Carl Norum
1
谢谢,这个方法很有效(具体来说是 #pragma GCC diagnostic ignored "-Wframe-larger-than=")。不过现在我更想要GCC 4.6了。 - user79758

1

这篇文章有点旧,但是我在寻找同样的答案时发现了它,于是我想发布我的解决方案(通过试错找到):

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wframe-larger-than="

void func() 
{ int x[2000] = {}; printf("%d",x[1]); }    

#pragma GCC diagnostic pop

似乎有效。由于某种原因,尝试使用“诊断警告”未成功。似乎无法更改生成警告的堆栈大小。此外,需要在末尾使用 = 。也许下一个人会发现这一点并节省时间 : )。 这是4.6.2(在ARM交叉编译器上)。
约翰

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接