我想写断言语句但不想中止程序。所以也许使用与 assert() 完全相同的语法,但称为 expect()。当然我可以自己写,但是 assert 非常聪明(例如,它不仅知道文件和行号,甚至知道不正确的表达式)。 我当然可以深入研究图书馆和 C-v/C-c 一个解决方案。 但这是一个如此明显的通用请求,我无法相信已经没有好的解决方案。这当然应该很容易在这里找到...
最佳答案
因为 assert
是一个预处理器宏,所以可以使用 __LINE__
和 __FILE__
宏,因为整个宏调用被扩展成一个单行。
您可以轻松制作自己的:
#define expect(value, message) \
do \
{ \
if (!(value)) \
{ \
fprintf(stderr, "%s failed in %s:%d\n", #value, __FILE__, __LINE__); \
} \
} while(0)
关于c - 是否有非致命的等价于 c 中的断言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16758422/