首页 > 编程语言 > 详细

c++多文件使用全局变量的方法

时间:2014-05-02 02:26:45      阅读:851      评论:0      收藏:0      [点我收藏+]


开始错误的做法

在global.h声明并定义变量

int sharedData = 9;
编译出错
Building target: CTest
Invoking: GCC C++ Linker
g++  -o "CTest"  ./src/CTest.o ./src/global.o   
./src/global.o:(.data+0x0): `sharedData‘被多次定义
./src/CTest.o:(.data+0x0):第一次在此定义
collect2: 错误: ld 返回 1

正确的做法,

在global.h头文件声明

extern int sharedData ;


在global.cpp定义初始化

int sharedData = 9;

然后在其他文件直接调用就可以了

int main(void)
{
	cout<<sharedData<<endl;

return 0;
}

貌似在调用之前声明一下也可以。

extern int sharedData ;

看一下编译

make all 
Building file: ../src/CTest.cpp
Invoking: GCC C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/CTest.d" -MT"src/CTest.d" -o "src/CTest.o" "../src/CTest.cpp"
Finished building: ../src/CTest.cpp
 
Building file: ../src/global.cpp
Invoking: GCC C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/global.d" -MT"src/global.d" -o "src/global.o" "../src/global.cpp"
Finished building: ../src/global.cpp
 
Building target: CTest
Invoking: GCC C++ Linker
g++  -o "CTest"  ./src/CTest.o ./src/global.o   
Finished building target: CTest


第一步

CTest.cpp编译为CTest.o  此处其实用到了global文件的变量,由于此阶段只需要包含头文件,让CTest.cpp知道global文件变量的声明即可。


第二部

global.cpp编译为global.o


第三部

链接CTest.o和global.o  ,生成可执行文件CTest。






c++多文件使用全局变量的方法,布布扣,bubuko.com

c++多文件使用全局变量的方法

原文:http://blog.csdn.net/lingerlanlan/article/details/24730705

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!