当我尝试使用嵌套函数编译以下 C 代码时:
#include <stdio.h>
int main() {
int five() {
return 5;
}
for (int i = 0; i < 10; i++) {
printf("%d ", five());
}
return 0;
}
我收到以下错误:
错误 C2143:语法错误:缺少“;”在 C 中的“{”之前
我使用的是 Visual Studio Community 2017 及其开发者命令行,所以我的编译器是 cl。
当我用gcc编译程序时,没有报错,所以我怀疑它与编译器有关,但如何?
最佳答案
编译器按“ token ”工作“ token ”。在 int main() {
之后,它会看到标记 int
、5
、(
和 )
是函数 5 声明的一部分(返回 int
并接受未指定但固定数量的参数)。此声明以标记 ;
完成,但下一个可用标记是 {
,这使得整个语法无效。
TLDR:嵌套函数在 C 中是非法的。
关于c - 错误 C2143 : syntax error: missing ';' before '{' in C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54672800/