断言没有运行时环境

时间:2014-09-12 14:55:32

标签: c++ c assert

在没有运行时环境的情况下,是否可以使用某种形式的断言? static_assert需要一个常量表达式,assert是C库的一部分,因此依赖于操作系统调用。但是,假设您没有库函数可以在屏幕上打印任何内容,并且您没有系统调用来使断言工作。什么是调试程序的方法?

1 个答案:

答案 0 :(得分:1)

所有assert宏都会调用abort(),如果其参数的计算结果为零,则会故意使程序崩溃。如果您的平台没有abort功能,您可以编写一个以合适的方式终止程序的程序。或者,如果您有abort但它不合适,您可以编写自己的自定义assert宏来执行其他操作。 (大概你的程序有一些产生输出的方式,或者你的问题比如何使assert更有用。)

如果您没有系统调用的原因是您正在编写内核(因此您负责实现系统调用),请注意内核相当于断言失败被称为kernel panic