这定义的意思是什么? #define ASSERT(exp)

时间:2013-08-13 04:14:33

标签: c

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

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

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

2 个答案:

答案 0 :(得分:0)

您应该阅读C中的Preprocessor directives

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

例如:

我们可以使用

Assert(<some condition or expression>)

通过代码而不是

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

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

答案 1 :(得分:0)

Firest最好更改marco名称,例如MYASSERT

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

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

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

与以下内容相同:

char *mem = malloc(800);
if(!mem)
  {PutStr("Err\n");}  //well I think you already define PutStr function