断言以及用户提供的消息(C++)

C++ 语言支持可以帮助调试应用程序的三个错误处理机制: #error 指令static_assert 关键字和 assert (CRT) 宏。 所有三种机制发出错误消息,,并且还测试软件断言。 软件断言指定在程序需要为 true 在特定位置的情况。 如果编译时断言失败,则编译器会发出一个诊断消息和编译错误。 如果运行时断言失败,操作系统会发出一个诊断信息并关闭应用程序。

备注

应用程序的生存期由预处理,生成和运行时阶段。 每个错误处理机制访问调试在这些阶段之一过程中可用的信息。 若要调试有效,选择提供有关该阶段的相应信息的机制:

  • #error 指令 实际上是在预处理时间。 它无条件地发出一个用户指定的消息并导致生成失败并显示错误。 消息可以包含由预处理器指令操作,但任何结果表达式不会计算的文本。

  • static_assert 声明实际上在编译时。 它测试由一个用户指定的集成表达式表示可以转换为布尔值的软件断言。 如果表达式的计算结果为零 (错误),则编译器会发出用户指定的消息,并且生成失败并显示错误。

    ,因为模板参数在用户指定的表达式,可以包括 static_assert 声明为调试模板尤其有用。

  • assert (CRT) 宏实际上是在运行时。 它计算一个用户指定的表达式,,并且,如果结果为零,系统会发出一个诊断信息并关闭应用程序。 许多其他宏,如_ASSERT_ASSERTE,类似于此宏,但问题不同的系统定义的或用户定义的诊断消息。

请参见

参考

#error指令(c/C++)

assert (CRT)

_ASSERT, _ASSERTE宏

static_assert

_STATIC_ASSERT宏

其他资源

模板