我想写assert语句但不会中止该程序.所以也许使用与assert()完全相同的语法,但称为expect().当然我可以编写自己的,但断言非常聪明(例如,它不仅知道文件和行号,而且甚至知道不是TRUE的表达式).我当然可以深入了解库和Cv/Cc解决方案.但这是一个非常明显的通用请求,我无法相信已经没有一个好的解决方案了.这当然应该很容易找到...
这是因为它assert是一个预处理器宏,所以可以使用__LINE__和__FILE__宏,因为整个宏调用被扩展为一行.
您可以轻松制作自己的:
#define expect(value, message) \
do \
{ \
if (!(value)) \
{ \
fprintf(stderr, "%s failed in %s:%d\n", #value, __FILE__, __LINE__); \
} \
} while(0)
Run Code Online (Sandbox Code Playgroud)