C语言/头文件/定义变量/编译时出现重复定义

可以定义,但是不推荐在头文件中定义变量。


因为很多.c文件都可以包含.h文件,也就是说这个变量会在很多.c文件中存在一个副本。假如这是一个多文件项目,在连接阶段,连接器就会抱怨存在多个相同变量名的全局变量,导致连接出错。


所以.h文件中一般只能包含全局变量的声明,函数声明,宏定义一类的,在.h文件中定义变量是不被推荐的。


如果在头文件中声明变量,然后在不同的源文件中都调用该头文件,会导致编译器报错,说变量被重复定义,(即使写了#ifndef xxxxx也不行)。
解决的方法是在对应的.c文件中声明该变量,在头文件中extern该变量。
在example.c中
int a = 0;

在example.h中

extern int a;

然后其他c文件#include "example.h"就可以了。

猜你喜欢

转载自blog.csdn.net/qq_36783816/article/details/112916516