如何在C++;? < >我想用自定义错误消息在C++代码中创建编译时错误。我想这样做有两个原因: 在我开发尚未实现的新功能时,强制编译失败。(编译时!待办事项提醒) 在尝试实现不受支持的模板专门化时创建更可读的错误

如何在C++;? < >我想用自定义错误消息在C++代码中创建编译时错误。我想这样做有两个原因: 在我开发尚未实现的新功能时,强制编译失败。(编译时!待办事项提醒) 在尝试实现不受支持的模板专门化时创建更可读的错误,c++,debugging,compilation,compiler-errors,output,C++,Debugging,Compilation,Compiler Errors,Output,我确信有一个技巧可以做到这一点,但我找不到一个资源来解释这个方法。我会将代码包装成“定义”形式的COMPILE\u FAIL(“错误消息”) 谢谢 D使用#错误: #error "YOUR MESSAGE" 这会导致预处理器出错。如果您想在以后的阶段(例如,在模板处理期间)检测错误,请使用static\u assert(C++11功能)。强制编译器错误(GCC,叮当风格): 调查 例如: #include <iostream> #include <type_traits>

我确信有一个技巧可以做到这一点,但我找不到一个资源来解释这个方法。我会将代码包装成“定义”形式的COMPILE\u FAIL(“错误消息”)

谢谢 D

使用
#错误

#error "YOUR MESSAGE"
这会导致预处理器出错。如果您想在以后的阶段(例如,在模板处理期间)检测错误,请使用
static\u assert
(C++11功能)。

强制编译器错误(GCC,叮当风格):

调查

例如:

#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
}
#包括
#包括
模板
类矩阵{
静态_断言(std::is_integral::value,“只能是整型”);
};
int main(){
矩阵v;//错误:静态断言失败:只能是整型
}

您需要的是
static\u assert
。静态断言完全在msvc10上完成任务…:-)
#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
}