在没有运行时环境的情况下,是否可以使用某种形式的断言? static_assert
需要一个常量表达式,assert
是C库的一部分,因此依赖于操作系统调用。但是,假设您没有库函数可以在屏幕上打印任何内容,并且您没有系统调用来使断言工作。什么是调试程序的方法?
答案 0 :(得分:1)
所有assert
宏都会调用abort()
,如果其参数的计算结果为零,则会故意使程序崩溃。如果您的平台没有abort
功能,您可以编写一个以合适的方式终止程序的程序。或者,如果您有abort
但它不合适,您可以编写自己的自定义assert
宏来执行其他操作。 (大概你的程序有一些产生输出的方式,或者你的问题比如何使assert
更有用。)
如果您没有系统调用的原因是您正在编写内核(因此您负责实现系统调用),请注意内核相当于断言失败被称为kernel panic。