C语言中的函数

时间:2015-05-19 05:35:30

标签: c function

此代码运作良好。

#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;主要功能。 为什么我需要这样做?

6 个答案:

答案 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");
}