可以将 ASCII 文字(不能将其称为字符串)分配给enum
值,如下所示:
#include <iostream>
// Macro to handle BIG/LITTLE ENDIAN
// Endianness is suppoesed to handled in this macro
#define TEMP(X) X
enum t
{
XX = 'AA', // 0x4141 or 0100 0001 0100 0001
};
int main()
{
std::cout<<XX<<std::endl;
}
0x4141
在这种情况下,编译器会对其进行编译并在编译时生成一个十六进制常量。它确实会生成一个编译警告,如下所示:
main.cpp:9:14: warning: multi-character character constant [-Wmultichar]
XX = 'AA', // 0x4141 or 0100 0001 0100 0001
我的问题是,我们可以避免这个警告吗?
或者我们可以编写更优雅的代码来实现类似的结果,可能使用模板和 constexpr?
我正在寻找一种可移植的替代方案,这样我就可以在不影响核心逻辑的情况下摆脱它作为重构的一部分。