c - 错误 C2143 : syntax error: missing ';' before '{' in C

标签 c visual-studio compiler-errors

当我尝试使用嵌套函数编译以下 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() { 之后,它会看到标记 int5() 是函数 5 声明的一部分(返回 int 并接受未指定但固定数量的参数)。此声明以标记 ; 完成,但下一个可用标记是 {,这使得整个语法无效。

TLDR:嵌套函数在 C 中是非法的。

关于c - 错误 C2143 : syntax error: missing ';' before '{' in C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54672800/

相关文章:

c - malloc 和 scanf

c# - 使用 Assembly.Load(byte[], byte[]) 加载 dll Visual Studio 2013 和 2015 之间的不同行为

c - 结构体编译时错误

编译组件时 Delphi 单元被忽略

c - 我正在丢失内存分配吗?

c - 如何设置异常发生时的回调函数?

c# - 如何获取类别或子类别中的所有产品

java - Sun JRE javac 和 Eclipse java 编译器之间的不一致?

c - 访问函数中的结构元素

c++ - 将 DLL C++ 类库移植到 Visual Studio 的问题