Linux移植遇到问题记录

在将C++代码从Windows VS移植到Linux时,遇到了两个主要的编译问题。一是'invalid use of incomplete type ‘class XXX’',原因为模板类在Linux环境下需要完整包含类的头文件;二是'changes meaning of ‘XXX’ from ‘enum A::B::XXX’',此问题由于在Linux下类的同名变量导致,解决方案是为变量提供不同的名称。此外,还讨论了Windows与Linux下宏定义的差异,包括换行符、注释符和导出宏的处理方式。在Linux中,类的成员函数声明也存在特定要求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

报错:invalid use of incomplete type ‘class XXX’

问题描述:定义模板类,使用前向声明引入class XXX,类定义中使用了指针,即XXX spXXX,以上OK。但模板在头文件中实现,实现过程中调用spXXX->Refresh()。
上述代码出了问题:在Window VS中可以执行编译,但移植到Linux时会报上述错误
解决:引入class XXX的头文件。

报错:changes meaning of ‘XXX’ from ‘enum A::B::XXX’

问题描述:使用类的同名的变量 GraphicGroup GraphicGroup;
上述声明在window vs中可以编译通过,但在Linux下会报错。
解决: GraphicGroup gGraphicGroup

导出

window #define XXX_Export __declspec(dllexport)
linux #define XXX_Export __attribute__((visibility(“default”)))

#define中含有 换行符和注释符

#define aaa \
std::cout<<“123”;\
//int a=1;\
std::cout<<“123”;
上述代码Linux可以编译,window编译会报错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值