如何避免C变量的多重定义?

时间:2013-11-27 23:05:49

标签: c variables c-preprocessor

我在我的标题中声明的 C 变量的多个定义出现了错误,并且正在我的源文件中使用。

在我的头文件中,我有:

//Number of jobs in the job list
extern int numberOfJobs;

在我的源文件中,我在多个函数调用中使用了numberOfJobs。

我的头文件顶部还有一个预处理指令。

#ifndef _JOBS_GROUP_H_
#define _JOBS_GROUP_H_

并以

结束
#endif

有人可以向我解释为什么会这样吗?我是 C 的新手。

1 个答案:

答案 0 :(得分:0)

我发现为什么我的外部变量会出现多个定义错误/未定义的引用错误。

首先导入“jobsgroup.h”并对我得到的错误产生影响。使用引号导入时出现多个定义错误,但在使用<>时出现未定义的引用错误。当文件位于同一目录中且<>时,使用“”表示如果文件位于包含文件夹中。我的头文件位于include文件夹中,因此使用<>在我的情况下更为可取。

现在这个问题的真正解决方案是我想通过在我的init函数中定义我的变量来定义extern变量。但是,要定义extern变量,必须将其声明在源文件中的函数之上,如下所示:

int numberOfJobs;

这解决了我的所有错误。谢谢你们试图帮助我。