我有以下代码:
#include <stdio.h>
int main()
{
void echoNumber()
{
int num;
printf("Enter a number:");
scanf("%d", &num);
printf("You entered %d", num);
}
echoNumber();
return 0;
}
但是当我尝试对其进行编译时,它会返回error: function definition is not allowed here
,我不确定自己做错了什么吗?
答案 0 :(得分:2)
函数定义在C
中的main()之外
#include <stdio.h>
void echoNumber() {
int num;
printf("Enter a number:");
scanf("%d", &num);
printf("You entered %d", num);
}
int main() {
echoNumber();
return 0;
}
答案 1 :(得分:2)
C没有嵌套函数。将echoNumber
移到main
之外,例如
#include <stdio.h>
void echoNumber()
{
int num;
printf("Enter a number:");
scanf("%d", &num);
printf("You entered %d", num);
}
int main()
{
echoNumber();
return 0;
}
答案 2 :(得分:2)
您在做错的是根本没有意识到C不是Pascal :-) Pascal在函数内具有函数的概念,其中前者的“可见性”仅限于后者。换句话说,您从其他任何地方都看不到内部功能。
C中没有在功能内具有功能的功能。与您拥有的最接近的是:
#include <stdio.h>
static void echoNumber()
{
int num;
printf("Enter a number:");
scanf("%d", &num);
printf("You entered %d", num);
}
int main()
{
echoNumber();
return 0;
}
static
前面的echoNumber
将其“可见性”限制为文件其余部分的“可见性”。这不像Pascal模型那么严格,但是只要您对代码进行良好的组织,它将同样有效。
您会注意到,我在上面引用了可见性一词。我使用的是通用英语术语(表示“您可以从哪里看到”),而不是使用preoper ISO标准的术语,因为我发现那些不熟悉该标准的人更容易理解。
答案 3 :(得分:0)
#include <stdio.h>
void echoNumber()
{
int num = 0;
puts("Enter a number:");
scanf("%d", &num);
printf("You entered %d", num);
}
int main()
{
echoNumber();
return 0;
}
问题在于,在C中,这不是您声明函数的方式。除非您不是要声明echoNumber,而是要使代码成为本地作用域,否则请
int main()
{
{
int num = 0;
puts("Enter a number:");
scanf("%d", &num);
printf("You entered %d", num);
}
return 0;
}