我在 C 程序中看到此代码,但我不明白。
#define ASSERT(exp) if(!(exp)){PutStr("Err\n");}
请解释并告诉我如何使用它。谢谢!
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
您应该阅读C 中的预处理器指令。
在这里,我们正在创建一个宏,它在编译时被我们用来定义宏的值替换。
例如:
我们可以用
Assert(<some condition or expression>)
通过你的代码而不是
if(<some condition or expression>)
{
putStr("Err\n");
}
在编译期间,编译器将所有这些 Assert 替换为实际情况。