-5

我在 C 程序中看到此代码,但我不明白。

#define ASSERT(exp) if(!(exp)){PutStr("Err\n");}

请解释并告诉我如何使用它。谢谢!

4

2 回答 2

0

Firest 最好改一下marco的名字,比如MYASSERT

然后我们有:#define MYASSERT(exp) if(!(exp)) {PutStr("Err\n");}

想想当我 malloc 一个 char 数组时,我可以使用它:

char * mem = malloc(800);
MYASSERT(mem);

它与以下内容相同:

char *mem = malloc(800);
if(!mem)
  {PutStr("Err\n");}  //well I think you already define PutStr function 
于 2013-08-13T08:18:51.947 回答
0

您应该阅读C 中的预处理器指令。

在这里,我们正在创建一个宏,它在编译时被我们用来定义宏的值替换。

例如:

我们可以用

Assert(<some condition or expression>)

通过你的代码而不是

 if(<some condition or expression>)
 {
    putStr("Err\n");
 }

在编译期间,编译器将所有这些 Assert 替换为实际情况。

于 2013-08-13T04:25:39.917 回答