从我正在阅读下面的代码是无效的c99,但是我似乎能够使用gcc -std = c99编译它,据我所知,应该禁用允许嵌入式功能的GNU扩展。我似乎无法弄清楚为什么会这样。
int main() {
int e() {
printf("testing");
return 0;
};
e();
return 0;
}
答案 0 :(得分:5)
为了获得有关不符合代码的警告,您还需要使用-pedantic
标记,然后您将看到以下内容( see it live ):
warning: ISO C forbids nested functions [-Wpedantic]
int e() {
^
要将此变为错误,您可以使用-Werror
将警告变为错误或-pedantic-errors
。
来自standards support上的gcc文档:
要获得标准所需的所有诊断,您还应指定-pedantic(或-pedantic-errors,如果您希望它们是错误而不是警告)