我想在我的 C++ 代码中创建一个带有自定义错误消息的编译时错误。我想这样做有几个原因:
- 在我处理尚未实现的新功能时强制编译失败。(编译时间!TODO提醒)
- 在尝试实现不受支持的模板特化时创建更易读的错误。
我确信这样做有一个技巧,但我找不到解释该方法的资源。我会将代码包装在 COMPILE_FAIL("error message"); 形式的#define 中。
感谢:D
我想在我的 C++ 代码中创建一个带有自定义错误消息的编译时错误。我想这样做有几个原因:
我确信这样做有一个技巧,但我找不到解释该方法的资源。我会将代码包装在 COMPILE_FAIL("error message"); 形式的#define 中。
感谢:D
使用#error
:
#error "YOUR MESSAGE"
这会从预处理器中产生错误。如果您想在稍后阶段(例如在模板处理期间)检测错误,请使用static_assert
(C++11 功能)。
例子:
#include <iostream>
#include <type_traits>
template<typename T>
class matrix {
static_assert(std::is_integral<T>::value, "Can only be integral type");
};
int main() {
matrix<int*> v; //error: static assertion failed: Can only be integral type
}
强制编译器错误(GCC,Clang 风格):
#error "You ain't finished this yet!"