2010-02-01 54 views
0

我在MSFT Visual Studio 2010 Beta上编写C89。我怎样才能做出断言,类似于Java的assert关键字?我想我需要定义一个宏,但我不知道如何。 (好像这东西是没有做过,所以我宁愿使用不是试图推出自己的。)C89中的断言?

这里有一个猜测:

int assert(int truth_value) { 
    // crash the program with an appropriate error message 
} 

回答

1

C89具有<assert.h>,其中包含宏您正在寻找。

#include <assert.h> 
assert(expression); 

从文档:

断言()宏测试给定表达,如果是假,则 呼叫处理终止。将诊断消息写入stderr 并调用abort(3)函数,从而有效地终止程序。

如果表达式为真,则声明()宏无效。

+0

是。需要记住的是'assert()'通常在生产运行中被禁用,因此确保*表达式*除了返回true或false值之外没有任何效果是很重要的。 – 2010-02-01 18:58:14

+1

是的,你可以通过定义'NDEBUG'来禁用'assert()'。 – 2010-02-01 22:31:16