c语言全局变量多个cpp,c++使用全局变量的方法多个文件

启动错误的做法

在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<

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。

版权声明:本文博客原创文章。博客,未经同意,不得转载。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值