繁体   English   中英

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

[英]error C2143: syntax error: missing ';' before '{' in C

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

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

这是您要达到的目标吗?

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

}

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

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

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

#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 */

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM