【发布时间】:2019-07-07 10:34:48
【问题描述】:
当我尝试使用嵌套函数编译以下 C 代码时:
#include <stdio.h>
int main() {
int five() {
return 5;
}
for (int i = 0; i < 10; i++) {
printf("%d ", five());
}
return 0;
}
我收到以下错误:
error C2143: syntax error: missing ';' before '{' in C
我正在使用 Visual Studio Community 2017 及其开发者命令行,所以我的编译器是 cl。
当我用gcc编译程序时,没有报错,所以我怀疑它与编译器有关,但是如何呢?
【问题讨论】:
-
嵌套函数不是标准的——只是说。
-
...含义:将函数five()移出main()——放在main之前,或者声明在main之前,放在之后。
-
很明显我的编译器出了点问题这在 99.999% 的情况下都是错误的。
-
@mand - GCC 有几个可用的扩展,包括识别嵌套函数,这会让刚开始学习 C 的人感到困惑。我建议在使用 GCC 进行学习或创建可移植代码时,那些导致其以非标准方式运行的扩展被禁止。
-
如果您正在学习编程,请始终使用
gcc -std=c11 -pedantic-errors -Wall -Wextra编译 gcc。然后你会得到很多警告(好)和纯标准 C,没有扩展。
标签: c visual-studio compiler-errors