头文件中可以定义变量吗

头文件中可以定义变量吗,第1张

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

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

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

写个头文件 c.h 声明 一个结构体类型

struct STU

{

int x

int y

}

定义结构体变量s的文件b.c

#include "c.h"

struct STU s/* 不加extern ,默认认为extern */

a.c 调用b.c里定义的全局变量s

#include <stdio.h>

#include "c.h" /* struct STU这个类型的定义(或者说声明)在这个头文件里 */

extern struct STU s/* 声明它是外部的类型是struct STU */

int main()

{

printf("s.x+s.y = %d+%d = %d\n",s.x,s.y,s.x+s.y)/*调用了*/

}

可以。但是分两种,一种仅限头文件用,另一种是包含这个头文件的文件也可以用。

第1种的定义方式:

例子1-1: int a=0

例子1-2: node n={0,100}// node 为用户自定义类型

总结:第一种仅限头文件的定义和普通的变量定义方式一模一样。

第2种的定义方式:

例子2-1: extern int a

例子2-2: extern node a// node 为用户自定义类型

总结:第二中定义的方式在普通定义方法前加上"extern"即可

望采纳!!


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

原文地址: http://outofmemory.cn/bake/11960046.html

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

发表评论

登录后才能评论

评论列表(0条)

保存