在没有运行时环境的情况下断言
Assert without runtime environment
在没有运行时环境的情况下,有可能拥有某种形式的断言吗?static_assert
需要一个常量表达式,而assert
是C库的一部分,因此依赖于操作系统调用。但是,假设您没有库函数可以将任何内容打印到屏幕上,也没有系统调用可以使assert工作。调试程序的方法是什么?
assert
宏所做的只是调用abort()
,以便在程序参数为零时故意使程序崩溃。如果您的平台没有abort
函数,您可以编写一个以适当方式终止程序的函数。或者,如果您有abort
,但它不合适,您可以编写自己的自定义assert
宏来执行其他操作。(假设您的程序有某种的输出方式,或者您的问题将比如何使assert
有用更广泛。)
如果没有系统调用的原因是您正在编写内核(因此您负责实现系统调用),请注意,内核的断言失败等效于内核恐慌。
相关文章:
- 在没有太多条件句的情况下,我如何避免被零除
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 在未初始化映射的情况下,将值插入到映射的映射中
- 是默认情况下分配给char数组常量的值
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- 如何在不产生任何垃圾的情况下获得C中的像素
- 在已经使用Git的情况下减少编译时间
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- 如何在没有信号的情况下从C++执行QML插槽
- 如何在不知道向量大小的情况下输入向量内部的向量?
- 为什么在某些情况下不写入此文件?
- 为什么Mat类的两个对象可以在不重载运算符+的情况下添加
- 调试断言仅在某些情况下失败?C++
- 如何在不更改命令行的情况下禁用断言
- 在 boost::lockfree:queue 默认构造函数的情况下断言失败
- 在没有-DNDEBUG和-O3的情况下编译时,标准库实现不使用断言有什么原因吗
- 如何在断言同时打开和关闭的情况下构建库
- 在谷歌测试中,如何在断言失败的情况下进行拆卸
- 一个断言宏,在可能的情况下扩展为static_assert
- 在没有运行时环境的情况下断言