如何在Visual Studio中使用#if指令编译时检查常量变量



以下代码在使用Visual Studio 2015时无法正常工作,因此它不会给出编译时错误"ALIGN_SIZE必须可被32整除"。有可能在编译时做这样的事情吗?

const static size_t ALIGN_SIZE = 65;
#if ALIGN_SIZE % 32 > 0
   #error ALIGN_SIZE must be divisible by 32
#endif

请参阅有关static_assert的MSDN页面。它有一个例子涵盖了这个确切的用例。例如:

static_assert(sizeof(void*)==4,"不支持64位代码生成。");

最新更新