本文目录一览:
头文件中声明变量
变量和函数声明都是正确的
#include stdio.h放在main.cpp里面
#include stdio.h是一个已经定义好的库文件,放在main.cpp里面表示你在主函数里面用到这个库的函数,所以不需要放在头文件里面。
C、C++怎么在头文件中定义全局变量
我们平时写裸机程序是一般都是在.c文件里面定义全局变量。然后再.h里面用extern声明全局变量。
但是有的时候我们写程序比较大的时候头文件很多,我们就需要不断的对同一全局变量重复声明,这样很繁琐而且低效。所以我们需要一种只需要在一种定义一次其它文件就不需要写声明的方法。在看到uC/Os 实时操作系统源码的时候我发现了这种方法。-头文件变量声明
比如我把全局变量定义在a.h文件里面。如下
#ifdef QUANJU
#define EXTN //定义EXTN为空
#eles
#define EXTN extern
#endif
EXTN char g_test1;
然后在b.c:
#define QUANJU
#include "a.h"//在该文件中a.h定义了一次g_test1
在d.c:
#include "a.h"//在该文件中a.h声明g_test1
上面三个文件中a.h文件里面的功能是:假如定义了QUANJU则EXTN 为空, 就把“EXTN char g_test1;”当成全局变量g_test1的定义(即 char g_test1)。假如没有定义QUANJU则EXTN 为extern,就把“EXTN char g_test1;”当成声明(即“extern char g_test1”)-头文件变量声明
然后无论什么文件使用全局变量g_test1,只要调用a.h,就不用再声明了。因为只要调用a.h由于没有宏定义QUANJU所以就等于在a.h声明了g_test1。只有b.c文件里面宏定义了QUANJU所以b.c里面调用的a.h就是定义g_test1。-头文件变量声明
头文件中可以定义变量吗
可以的,但是不推荐在头文件中定义变量。
因为很多.c文件都可以包含.h文件,也就是说这个变量会在很多.c文件中存在一个副本。假如这是一个多文件项目,在连接阶段,连接器就会抱怨存在多个相同变量名的全局变量,导致连接出错。
所以.h文件中一般只能包含全局变量的声明,函数声明,宏定义一类的,在.h文件中定义变量是不被推荐的。