c/c++多文件相互调用,为解决ERROR LNK:2005

原则上是一个cpp文件对应一个h文件

假设有a.cpp对应a.h,b.cpp对应b.h。.h文件中存在该cpp文件所有全局变量和函数的声明。

并且int main() 文件存在于a.cpp中。

其中main()要调用b文件中的函数,则在a.cpp 中声明#include ”b.h“。


对于全局变量,可以在a.cpp中定义int a = 10;

或者在a.h中声明int a;在a.cpp中定义a = 10;

在b.cpp中想要更改a的值,如a = 30;

则在b.h中添加extern int a;即可


现在全局变量不是基本类型了,比如说想要调用一个枚举类的全局变量,该怎么办呢

一种可能的解决方式为

在a.h

enum abc{a,b,c};
abc cc = a;

在a.cpp中

#include"a.h"

b同时也想修改全局变量cc

在b.cpp中

extern enum abc{a,b,c};
extern abc cc;

cc = c;

即可


但是,但是

如果在b.h中写

extern enum abc{a,b,c};
extern abc cc;

在b.cpp中

#include"b.h"

我认为编译起来是一样的,但是编译器会报错 error C2011:"abc":"enum"类型重定义

到底为什么,我没有想明白,记得问问陈宪



另外,全局变量被多个文件调用是不安全的

所以尽量少采用这种办法,

还有什么别的能够在多文件中更改同一个变量,而且安全的办法还没找到,我再想想








  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值