我想在我的C ++代码中使用自定义错误消息创建编译时错误。我想这样做有几个原因:
我确信这样做有一个技巧,但我找不到解释该方法的资源。我会将代码包装在COMPILE_FAIL形式的#define中(“错误消息”);
由于 d
答案 0 :(得分:35)
使用#error
:
#error "YOUR MESSAGE"
这会从预处理器产生错误。如果要在稍后阶段检测到错误(例如在模板处理期间),请使用static_assert
(C ++ 11功能)。
答案 1 :(得分:20)
示例:
#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
}
答案 2 :(得分:4)
强制编译错误(GCC,Clang样式):
#error "You ain't finished this yet!"