c函数片段的含义

来源:百度知道 编辑:UC知道 时间:2024/05/03 08:10:27
#define DEBUG

int Push(Stack *s,char ch)
{
#ifdef DEBUG
char *name = s->stackname;
OutputStatus();
if(strcmp(name, "OPND") == 0)
printf("\tPUSH(%s, %d)", name, ch);
else
printf("\tPUSH(%s, %c)", name, ch);
#endif
*s->top=ch;
s->top++;
return 0;
}

这个DEBUG是什么 只是define一下就用了? 不明白,程序中没有其他说明,DEBUG在这个程序的其他函数中也有调用,它是做什么的 谢谢

这完全是用来调试用的
一般的程序有两个版本,一个调试版本(DEBUG),一个发布版本(RELEASE)
DEBUG 就是要打印一个信息来帮助调试
RELEASE 则是给用户用的,用户不需要调试
所以

#ifdef DEBUG
#endif
之间的部分代码就是程序员自己玩的,用户不要的
^_^

这个是一个宏开关
一般在软件调试的时候,用的较多。

比如上面这一段代码中:
==========================
#ifdef DEBUG
char *name = s->stackname;
OutputStatus();
if(strcmp(name, "OPND") == 0)
printf("\tPUSH(%s, %d)", name, ch);
else
printf("\tPUSH(%s, %c)", name, ch);
#endif
==========================
这一段应该是调试用的,只要DEBUG 被define了就可以执行。

如果调试完毕,不希望执行这一段了,只要把开头的
#define DEBUG
改为
#undef DEBUG
就可以了。

这很像是一个开关,所以叫做宏开关。

DEBUG这个宏是VC在debug模式下的预定义宏,你可以在编译预处理参数里找到。意思是在dubug版本输出堆栈的内容,在release版本则不输出(因为输入输出比较耗费时间,影响程序的性能)