error C2062: 意外的类型“__int64”

在将公司项目从VS2013+Qt5.9.0+osg3.4.1升级到VS2017+Qt5.12.10+osg3.6.5后,遇到了编译错误,主要包括类型解析错误和枚举冲突。问题源于第三方库中定义的宏#define INT64 __int64与osg::Uniform文件中的枚举INT64冲突。通过调整头文件包含顺序解决了编译问题,但这种方法可能存在潜在隐患。建议避免在头文件中使用宏以减少类似问题的发生。

今天升级了一下公司的项目 vs2013 qt5.9.0 osg 3.4.1 升级到 vs2017 qt5.12.10 osg3.6.5,升级后编译的时候报错

error C2062: 意外的类型“__int64”

error C3805: “类型”: 意外标记,应输入“}”或者“,”

error C2039: “UNDEFINED”: 不是“osg::Uniform”的成员

 

点击后发现是在Uniform 文件的一个枚举INT64 对比老版本的文件发现没有此枚举

所以考虑可能有些文件和这个枚举冲突导致,后来通过慢慢的注释掉其他头文件引用,排查到引用的一个第三方库中的头文件中

有一个宏导致的冲突#define INT64           __int64

对此的解决办法,可以调整头文件的包含顺序,可以保证编译通过,但不清楚会不会给程序埋下隐患

 

思考:尽量不要在头文件中使用宏

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值