我正在编译在 Visual C++ 2012 中为 GCC 编写的代码。我收到了关于使用以下枚举截断枚举值的警告(由于值超出了 int 的范围):
enum tile_flags {
TILE_FLAG_INNER_FLAME= 0x10000000ULL,
TILE_FLAG_CONSTRICTED= 0x20000000ULL,
TILE_FLAG_MIMIC_INEPT 0x2000000000ULL
TILE_FLAG_MIMIC 0x4000000000ULL
TILE_FLAG_MIMIC_RAVEN 0x6000000000ULL
TILE_FLAG_MIMIC_MASK 0x6000000000ULL
}
在为 x86 编译时,似乎 MSVC 只是截断了枚举值以适应 32 位。但是,在 GCC 中不会发生截断。海湾合作委员会发生了什么?我怎样才能使这项工作适用于 MSVC?