错误C2143:语法错误:缺少';'在C中的“ {”之前

时间:2019-02-13 14:40:42

标签: c visual-studio compiler-errors

当前,我遇到一个非常奇怪的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

我认为我的编译器有问题,但是什么?

我正在Windows 10及其开发人员命令行上使用Visual Studio Community 2017。所以我的编译器是cl。

很高兴听到有人是否有线索。

3 个答案:

答案 0 :(得分:3)

这是您想要实现的吗?

#include <stdio.h>
int five() {
        return 5;
    }
int main() {
    for (int i = 0; i < 10; i++) {
    printf("%d ", five());
    }
    return 0;

}

答案 1 :(得分:3)

编译器通过“令牌”工作“令牌”。在int main() {之后,它会看到标记intfive(),它们是函数声明5的一部分(返回int和接受数量不确定但固定的参数)。该声明是用令牌;完成的,但是下一个可用的令牌是{,这会使整个语法无效。

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

答案 2 :(得分:2)

格式正确,带有一些开头和结尾的注释,以使内容更加清晰。

#include <stdio.h>

int five()   /* Start of Function FIVE */
{
    return 5;
}            /* End of Function FIVE */



int main()   /* Start of MAIN */
{
    for (int i = 0; i < 10; i++)
    {
        printf("%d ", five());
    }

    return 0;
}             /* End of MAIN */