我想组装一个 char 数组,其中包含一个编译时常量值和一个字符串,也是编译时常量。解决方案如下:
char packet[] = "\x42" __DATE__;
这个方法虽然可以运行,但其可读性和可维护性较差,因为0x42是一个消息操作码,在其他地方也被使用,这样就变成了魔法数字。现在,我可以向字符串中添加一个虚拟的“x”,并在定义后面跟随以下赋值语句:
#define OPCODE 0x42
char packet[] = "x" __DATE__;
packet[0] = OPCODE;
但我感觉这个可以在纯常量字符串字面量中完成,只是我不知道如何做。有什么想法吗?
#define OPCODE 42
是十进制的42(八进制为52
,十六进制为2a
,ASCII码为"
),而字符串转义序列"\42"
是八进制的42(十进制为34,十六进制为22
,ASCII码为*
),因此问题本身就是不一致的。 - ndim