在多个头文件和源文件中组织C中的变量和函数时发出警告

时间:2012-02-14 22:07:24

标签: c compiler-warnings

我第一次尝试为一个简单的程序编写一个实际的专业C代码。

1)我创建了一个头文件名Essential_data.h,并在其中声明了我的所有函数和全局变量。我已将所有变量声明为extern ..并且所有函数声明都是正常的

例如:

void test ();
extern int x;

2)然后我创建了另一个名为main_data.h的头文件,并在那里定义了我的所有全局变量。 例如:int x;

3)然后,我创建了包含相应函数定义的相应源文件,并在源文件中包含main_data.h,需要该全局变量。

这就是全部。在编译项目之后,我收到了许多关于所有功能的警告

  

函数测试的隐式声明[-Wimplicit-function-declaration]

所以在那之后我做了以下

1)我在Essential_data.h中的函数声明前放了一个extern。 例如:

extern void test();

2)在main_data.h中我正常声明了函数并编写了

void test ();

我的Essential_data.h只在主函数中出现,而在其他地方没有。

然后重新编译,之后所有警告都消失了。

那么正确的方法还是有其他方法可以更有效地组织它们?

1 个答案:

答案 0 :(得分:0)

你应该:

  • 包含extern声明(函数和对象)的一个或多个.h文件。这些文件需要包含在需要这些符号的.c文件中。您不应该有多个声明(每个标识符应该只声明一次

  • 您在其中定义功能和对象的一个​​或多个.c文件

在你的例子中:

/* essential_data.h */
void test ();
extern int x;

/* something.c */
#include "essential_data.h"

int x;
void test()
{
    /* ... */
}

/* main.c */
#include "essential_data.h"

/* ... */