请教个关于define的问题
我在http://yzfy.org/发现每个函数的前面都有#define PB_ID 1#define CP_GCC 是什么意思啊,难道是dev-c++里面c程序开始的定义必须这样?
楼上跑题了。
宏定义是根据不同程序的需求而定义的,我举个例子,比如说我有个函数需要调试
void foo()
{
char s[80]; /* 我这里定义了个数组s */
.
.
. /* 经过若干步骤,s的值改变了 */
printf("%s\n",s); /* 这里我要检查s的改变,是否符合我最初的目的,而这段语句并不希望出现在发布后的程序中,可作为调试部分语句 */
}
于是,我想到了使用一个宏来表示应用程序是否出于调试状态
#define _DEBUG_
那么如下的函数改写成
void foo()
{
char s[80];
.
.
.
#ifdef _DEBUG_ /* 若_DEBUG_这个符号被定义,即调试状态,则编译以下语句 */
printf("%s\n", s);
#endif
}
如果你把#define _DEBUG_这一行注释掉,编译的时候不会将printf语句编译进去了,也就是发布版本不会出现有输出的情况,如下
void foo()
{
char s[80];
.
.
.
} /* 去掉_DEBUG_编译的是这样一个情况 */