Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何避免C变量的多重定义?_C_Variables_C Preprocessor - Fatal编程技术网

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

如何避免C变量的多重定义?,c,variables,c-preprocessor,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相当陌生,我发现了为什么我的外部变量会出现

我在头文件中声明并在源文件中使用的C变量的多个定义出现错误

在我的头文件中,我有:

//Number of jobs in the job list
extern int numberOfJobs;
在我的源文件中,我在多个函数调用中使用了numberOfJobs

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

#ifndef _JOBS_GROUP_H_
#define _JOBS_GROUP_H_
并以

#endif

有人能给我解释一下为什么会这样吗?我对C

相当陌生,我发现了为什么我的外部变量会出现多个定义错误/未定义的引用错误

首先导入“jobsgroup.h”,并对我得到的错误进行区分。使用引号导入时出现多个定义错误,但使用时出现未定义的引用错误。如果文件位于同一目录中,并且文件位于包含文件夹中,则使用“”。我的头文件在一个include文件夹中,所以在我的情况下使用更可取

现在这个问题的真正解决方案是,我认为在init函数中定义变量就是定义extern变量。但是,要定义extern变量,必须在源文件中的函数上方声明它,如下所示:

国际就业人数


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

你们应该在这里发布你们的代码,看看发生了什么。如果它是外部的,那么你们也应该将代码发布在它实际声明的地方…@K你们的意思是“定义的”。它就在这里声明。您还应该发布错误消息(复制并粘贴它,不要重新键入或汇总)。您所显示的看起来是正确的。您应该在一个
.c
文件中定义
numberOfJobs
.h
中的
extern
声明应该在引用它的每个翻译单元中恰好出现一次;包括警卫在内的人应该处理这个问题。定义需要在整个程序中只显示一次。如果可能的话,编写一个小程序(可能是3个文件,每个文件几行)来重现问题,并向我们展示您问题中的源文件,以及您正在使用的编译器命令和确切的错误消息。