我得到了:
致命错误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;
有人可以看到我哪里出错吗?
答案 0 :(得分:3)
预编译在编译之前进行。这意味着您不能在预处理期间使用编译时概念(即const int TOTAL = 16;
)。预处理器不了解程序中的变量(甚至const
)。
而不是使用#define
作为常量,正如Wug所建议的那样,更清洁的解决方案将是:
typedef UINT32 TARGET_TYPE;
const int TARGET_TYPE_SIZE = sizeof(TARGET_TYPE);
const int TOTAL = 16;
const int NUM_BYTES = (TOTAL % TARGET_TYPE_SIZE);
答案 1 :(得分:2)
试
#define V2 256
而不是
const int V2 = 256;
编辑:有一个很好的理由让你做预处理器宏而不是常规分支,对吗?
编辑2:正如其他人指出的那样,预处理器不接受sizeof语句,因为这些语句由编译器处理。您的选择是使用编程if语句(而不是预处理器)或使用size表达式的实际值(这将涉及硬编码大小。但是,因为它是UINT32,我认为它永远不会是除了4之外的任何东西。