打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
在头文件中定义全局变量

让我们先来看一个例子。

在下面的工程中,共有三个文件:main.cpp、func.cpp、var.h。

其中var.h中定义了一个int型的变量:

1 //var.h2 3 #ifndef __VAR_H_4 #define __VAR_H_5 6 int var = 10;7 8 #endif

在func中定义了一个函数,返回刚才定义的var变量:

1 //func.cpp2 3 #include "var.h"4 5 int func(void)6 {7     return var;8 }

最后是main.c,在main函数中调用func函数

 1 //main.cpp 2 #include <stdio.h> 3 #include "var.h" 4  5 int func(void); 6  7 int main(void) 8 { 9     int i = func();10 }

接着编译,链接。编译时不会有错误,但是链接时会报错。在VC6中提示错误如下:

func.obj : error LNK2005: "int var" (?var@@3HA) already defined in main.obj
Debug/temp.exe : fatal error LNK1169: one or more multiply defined symbols found

 

这是一个常见的错误。这里

但是有时候,确实把一些全局变量定义在一个头文件里会比较方便。下面介绍一个常见的方法:

 1 //global.h 2 #ifdef GLOBAL_VARIABLES_HERE 3 #undef EXTERN 4 #define EXTERN 5 #endif 6  7 //下面是全局变量的定义 8 //前面加上EXTERN修饰 9 10 EXTERN int var;

这样,在global.cpp中通过定义GLOBAL_VARIABLES_HERE宏,能够将EXTERN展开成空宏。而其它地方(一般在重要的头文件里):

1 #define EXTERN extern

这样就可以了

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Linux系统下DSO同名全局变量浅析
一篇文章带你了解Go语言基础之变量
变量的声明与定义以及关键字extern的用法
C语言正确使用extern关键字
Golang学习之路(二):Golang的语言结构和变量
编程语言C语言 全局变量和局部变量区别 - C语言零基础入门教程
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服