首页 > 解决方案 > 错误 C2143:语法错误:缺少“;” 在 C 中的“{”之前

问题描述

当我尝试使用嵌套函数编译以下 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编译程序时,我没有收到任何错误,所以我怀疑它与编译器有关,但是如何?

标签: cvisual-studiocompiler-errors

解决方案


编译器按“令牌”工作“令牌”。在int main() {它看到标记int、和之后five,它们是函数 5 声明的一部分(返回并接受未指定但固定数量的参数)。这个声明是用令牌完成的,但是下一个可用的令牌是使整个事情语法无效。()int;{

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


推荐阅读