将它们包装在标准NDEBUG宏中.
#ifndef NDEBUG
static_assert(...);
#endif
Run Code Online (Sandbox Code Playgroud)
对于发布版本,您可以像常规一样禁用它们assert.虽然我没有真正看到这个目的.
如果您不喜欢在宏中包装调用,则可以定义一个为您执行此操作的宏:
#ifndef STATIC_ASSERT
#ifndef NDEBUG
#define STATIC_ASSERT(...) static_assert(__VA_ARGS__)
#else
#define STATIC_ASSERT(...) static_assert(true, "")
#endif // NDEBUG
#endif // STATIC_ASSERT
Run Code Online (Sandbox Code Playgroud)
用法类似于常规static_assert.请注意,如果您的程序定义了一个关键字并包含一个标准库头,那么定义一个static_assert宏是未定义的行为.
| 归档时间: |
|
| 查看次数: |
1082 次 |
| 最近记录: |