此代码运作良好。
#include<stdio.h>
#include<conio.h>
void show()
{
printf("Show function");
}
void main()
{
show();
}
但这需要更多。
#include<stdio.h>
#include<conio.h>
void main()
{
show();
}
void show()
{
printf("Show function");
}
那就是..我必须宣布一个&#34; Show&#34;主要功能。 为什么我需要这样做?
答案 0 :(得分:2)
您需要在show
之前声明main
因为main
在定义之前调用show
。您可以使用函数原型执行此操作,如下所示
#include <stdio.h>
// You reference show in main but the compiler will see main before show
// This is required to let the compiler know show will later be defined
void show();
void main()
{
show();
}
void show()
{
printf("Show function");
}
答案 1 :(得分:1)
在第一个例子中,当C枚举函数调用show时,它已经知道函数采用了什么参数,因为show的定义高于文件中的调用,而C只是一次到了botom。在第二个例子中,当show to show is hot C时,还没有听到任何关于名为show的函数。
答案 2 :(得分:1)
您的代码将在一次传递中从头到尾进行解析。
第二个片段无法编译,因为编译器在知道调用后不知道show ()
是什么。
作为一个修复,你可以使用一个简单的前向声明,告诉编译器函数的名称和签名,而不是直接告诉它的主体:
#include <stdio.h>
#include <conio.h>
void show(); // Now the compiler knows the function
void main()
{
show();
}
void show()
{
printf("Show function");
}
此类声明通常发生在头文件中。然后,实际的实现可能会出现在任何翻译文件中(通常也会分组)。
答案 3 :(得分:0)
因为在最近的C中,每个函数在被使用之前都必须声明或定义(可能在某些头文件中)。
添加一行(声明show
),如
void show(void);
在第二个示例中的main
之前。第一个示例中不需要它,因为show
在首次使用之前已经定义。
请注意,<conio.h>
不是标准标题(POSIX系统上不存在)
答案 4 :(得分:0)
您可以在main之前(或在头文件中)声明main之前的函数:
#include <stdio.h>
#include <conio.h>
void show();
void main() {
show();
}
void show() {
printf("Show function"
答案 5 :(得分:0)
实际上你并没有在main中声明show()函数,而是从main调用show()函数。 函数必须在main函数之外或在调用之前声明。 在一个源文件中定义函数并在另一个文件中调用该函数时,需要函数声明。在这种情况下,您应该在调用函数的文件顶部声明函数。
(您的程序可能会在未声明函数的情况下运行)
#include <stdio.h>
void show();
void main()
{
show();
}
void show()
{
printf("Show function");
}