上升带有流语法的编译时错误消息
rise compile-time error message with stream syntax
如何在错误信息为std::cout
语法的情况下产生编译时错误消息?
int main(void){
int i = 14;
int condition = 0;
if (condition == 0){
#error "no, " << i << " won't work.";
}
}
应该给出像
这样的错误信息"test.cpp:5: error: no, 14 won't work."
在程序的编译过程中,就像g++的#error
或c++11的static_assert(false, "err_message");
。
在上面的例子中,在实际运行程序之前,变量i
的值"应该"是已知的…
我真正需要的地方是:
我有一个具有静态维度的多维数组。我想提出一个编译器时间错误,同时提到多维数组的维度(如3x4x5)。
我想要一个std::cout
一样的错误消息流语法,因为cout可以很容易地连接数字和字符串。我认为#error
不能连接数字和字符串。
constexpr
有帮助吗?
根据定义,编译时错误发生在编译过程中,要么是因为编译器不理解代码中的某些内容,要么是因为您使用预处理器指令(如#error
)或静态断言static_assert ( bool_constexpr , message )
指定了条件。
因此,如果你想在你的代码上运行检查,并使用cout
写错误消息,你不能再调用结果编译时错误,因为用于检查它们的代码已经编译,错误本身因此是运行时错误。
你能写为什么#error不适合你吗?
相关文章:
- 在缺少函数重载时抛出异常,并带有 std::variant 而不是编译时错误
- 如何在常量计算表达式中获取编译时错误?
- C++根据调用的构造函数强制编译时错误
- 使用 std::iterator_traits<> 时编译时错误不明确
- is_same和variadic模板编译时错误无效转换
- 私有运营商删除会触发 GCC 和 Clang 的编译时错误,但不会在 MSVC 上触发编译时错误
- 运行时与编译时多态性:更好的可读性与编译时错误检查,更重要的是
- 引发编译时错误
- 为什么调用不明确的 ctor 时没有编译时错误?
- 在 sizeof 运算符上强制编译时错误
- 未经授权的私有类成员访问会产生编译时错误而不是运行时错误?
- 从Mac上的终端编译时C 错误
- 使用MINGW-W64使用-M32选项(32位代码)编译时错误
- C++线程错误 - 带有类参数的编译时错误
- 如果编译时间构量参数是错误的,则生成编译时错误
- 编译程序时错误消息
- 尝试调用指向成员函数的函数指针时出现编译时错误
- 编译时错误:删除了联合默认构造函数
- std::vector 的 push_back() 导致奇怪的编译时错误消息
- 上升带有流语法的编译时错误消息