C、C++怎么在头文件中定义全局变量

C、C++怎么在头文件中定义全局变量,第1张

我们平时写裸机程序是一般都是在.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。

stdio.h是c的头文件,包含了对你使用的函数的声明。

当你决定使用某个函数的时候,你去查它的帮助信息,都会看到这个函数的声明是包含在哪个头文件的,这样你就可以把它包含进来,从而使用这个函数。

具体请查阅c语言对于include的讲解,还有对于函数,变量的声明部分。 include <stdio.h>是C的输入输出函数,但在C++中使用可以省略.

#include <math.h>是数学函数,譬如你要用到squar()函数时就必须添加这个头文件.

#include <string.h>是字符窜函数.

#include <stdlib.h>呵呵,这个有点忘记了,好久没有用了,不好意思啊

反正这几个是常用的,其他还有很多很多,呵呵,自己可以看书后面的几页都有介绍的呢!~ #include<iostream.h>:此头文件申明了所有I/O *** 作所需的基本服务,即支持流的输入输出 *** 作,譬如程序中有cin ,cout

#include<iomanip.h>:此头文件说明可以使用控制数据的输出格式,如设置数制、填充字符、精度、数据宽度等等,譬如使用setw()、setfill() 、setprecision()等

#include <string.h>是字符窜处理函数

#include<afx.h>程序中要使用CString类

#include <stdlib.h>程序中要使用C语言系统提供的库函数gets和puts函数

回答者:雨之泪1988 - 助理 二级 2-6 08:35

stdio.h是输入输出头文件,所有有关输入输出的语句如"printf","scanf","putchar","getchar"等,都要用该头文件,头文件其实就是定义了这些函数的文件,它是系统提供给我们的接口

math.h是再进行数学运算时要包含的头文件,它提供了取绝对值,开方,求幂等数学运算

#include<conio.h>与#include<stdio.h>一样,是头文件包含。

这个头文件包含有许多库函数像#include<stdio.h>包含printf与

scanf一样,getch()也是其中一个函数,它的功能是无回显得到一

字符,常用这个函数做密码之类的程序。在TC中编译不需要加头文件

可以,编译器默认包含。就像在TC是不用加#include<stdio.h>一样。

但在VC中编译就要加了。否则系统认为你的函数没有定义。

其它头文件你只要再TC文件夹中看看include这个文件夹里面的文件就可以了

一般来说,不会将全局变量的定义写在头文件中,因为如果多个c源文件都添加了头文件,那很容易引起重定义的问题,这时候一般编译器都会提示。

正确的作法是在c源文件中定义一个全局变量。在头文件中加入全局变量的声明。比如

//var.c 一个主要用于定义全局变量的c源文件

int g_a

char g_x

//var.h 用于声明定义的全局变量

extern int  g_a

extern char g_x 

//test.c 一个用于测试的头文件

#include <var.h>

void f(){

    g_a = 1

    g_x = 'x'

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11544571.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存