从我阅读的代码来看,下面的代码是无效的c99,但是我似乎能够使用gcc-std=c99编译它,据我所知,它应该禁用允许嵌入函数的GNU扩展。我好像搞不懂为什么会这样。
int main() {
int e() {
printf("testing");
return 0;
};
e();
return 0;
}
最佳答案
为了获得关于不一致代码的警告,您还需要使用-pedantic
标志,然后您将看到以下(see it live):
warning: ISO C forbids nested functions [-Wpedantic]
int e() {
^
要将此转换为错误,可以使用
-Werror
将警告转换为错误或-pedantic-errors
。从gcc文件中:
要获得标准要求的所有诊断,还应指定-pedantic(如果希望它们是错误而不是警告,则指定-pedantic errors)
关于c - 使用-std = c99在gcc中嵌套函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29108187/