最近我将我的 SourcePro 升级到 2021 版本,在 RCB 设置期间,当它提示我选择 C++ 方言时,我选择了唯一可用的选项,即 C++14。设置后,我开始编译 Tuxedo 代码,目前在多个文件中遇到以下错误,说我的 Tuxedo 项目中有大约 200-250 个文件,下面是我的 Solaris OS 和编译器的详细信息。
unname -a:
SunOS nzdrb12z 5.11 11.4.40.107.3 sun4v sparc sun4v 非全局区域
抄送-V:
cc: Studio 12.6 Sun C 5.15 SunOS_sparc 2017/05/30
此处不允许将值设置为“short”。“/app/sdasup/home/mhp/source/develop/bc/include/bcMwServicesGuid.h”,第 36 行:错误:此处不允许将“int”值缩小为“short”。“/app/sdasup/home/mhp/source/develop/bc/include/bcMwServicesGuid.h”,第 41 行:错误:此处不允许将“int”值缩小为“short”。“/app/sdasup/home/mhp/source/develop/bc/include/bcMwServicesGuid.h”,第 45 行:错误:此处不允许将“int”值缩小为“short”。
假设我选择第一个错误信息文件打开 bcIControlBlock.h 并且第 34 行指向以下代码,
DEFINE_GUID(IID_IAbcIControlBlock, 0xc7645022, 0x93e9, 0x11d1, 0x9d, 0x90, 0x0, 0x0, 0xf6, 0x4e, 0x16, 0x6a);
当搜索宏时,它具有以下定义,
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
EXTERN_C const GUID name \
= { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }
作为一种解决方法,我厌倦了以下解决方法,
DEFINE_GUID(IID_IAbcIControlBlock, 0xc7645022, (short)0x93e9, 0x11d1, 0x9d, 0x90, 0x0, 0x0, 0xf6, 0x4e, 0x16, 0x6a);
尽管效果很好,但我对解决问题所采用的方法非常怀疑。然而,更改多个文件似乎很痛苦。
问题:
- 变通解决方案是否正确?
- 如果是这样,那么如何使在一个地方更改它而不是多个文件更通用?
- 如果不是,最好的解决方法是什么,以免进一步破坏?
提前致谢。