How do I test that static assert does indeed assert for “false”?
假设我有一个自定义的静态断言实现(因为我需要针对没有内置 static_assert 的编译器)。我想制作一个测试来检查
1
|
MY_STATIC_ASSERT(false);
|
确实断言。如果我只是编写这样的代码 – 它不会编译(因此不会运行)。我宁愿有一些代码在上面的代码失败时编译得很好,而在上面的代码编译时编译失败。
这可能吗?我可以在编译时(或至少在运行时)检查我的静态断言是否确实为”假”断言?
- 啊,老问题 – 谁测试测试人员!
当然,您可以进行”编译时”检查——只要您完全在编译其他东西:
1
2 3 4 5 6 7 8 9 10 11 12 |
// test_my_static_assert.cpp
#include”my_static_assert.h” int main() { // compile.sh |
什么的。但它必须完全在一个单独的程序中。
- 我想我可以将其作为 Visual Studio 中的”构建步骤”或其他构建系统中的等效项。
来源:https://www.codenong.com/26804222/