我得到:
致命错误 C1017:无效的整数常量表达式
使用以下代码:
#if V1>0
//do stuff
#endif
V1 在 .cpp 文件的顶部定义如下:
#define V3 UINT32
#define V4 sizeof(V3)
#define V1 (V2 % V4)
V2定义如下:
const int V2 = 256;
谁能看到我哪里出错了?
我得到:
致命错误 C1017:无效的整数常量表达式
使用以下代码:
#if V1>0
//do stuff
#endif
V1 在 .cpp 文件的顶部定义如下:
#define V3 UINT32
#define V4 sizeof(V3)
#define V1 (V2 % V4)
V2定义如下:
const int V2 = 256;
谁能看到我哪里出错了?
预处理发生在编译之前。这意味着您不能const int TOTAL = 16;
在预处理期间使用编译时概念(即)。预处理器不知道程序中的变量(甚至const
)。
正如 Wug 建议的那样,不要使用 a#define
作为常量,而是更清洁的解决方案是:
typedef UINT32 TARGET_TYPE;
const int TARGET_TYPE_SIZE = sizeof(TARGET_TYPE);
const int TOTAL = 16;
const int NUM_BYTES = (TOTAL % TARGET_TYPE_SIZE);
尝试
#define V2 256
代替
const int V2 = 256;
编辑:您使用预处理器宏而不是常规分支是有充分理由的,对吗?
编辑 2:正如其他人指出的那样,预处理器不接受 sizeof 语句,因为这些语句由编译器处理。您的选择是使用编程 if 语句(与预处理器相反)或使用大小表达式的实际值(这将涉及对大小进行硬编码。但是,由于它是 UINT32,我认为它永远不会是 4 以外的任何东西。