当前,我遇到一个非常奇怪的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。
很高兴听到有人是否有线索。
答案 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() {
之后,它会看到标记int
,five
,(
和)
,它们是函数声明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 */