C语言中,//注释的后面如果还有行连接符/那就危险了,下面一行会被注释掉,示例如下:
void main()
{
int a, b;
a = 7; //注释的后面有行连接符/
b = 8;
printf("a=%d, b=%d", a, b);
}
这段程序中,b输出是0而不是8,就是因为 b=8; 这句被注掉了。
上面这段程序去掉行连接符后如下:
void main()
{
int a, b;
a = 7; //注释的后面有行连接符 b = 8;
printf("a=%d, b=%d", a, b);
}
如果是在宏定义中就更危险了:
#define MEMFREE_STRUCT(_pStruct_)/
//printf("free memory"); /
if(_pStruct_ != NULL){/
free(_pStruct_);/
_pStruct_ = NULL;/
}
这个宏展开就成了
#define MEMFREE_STRUCT(_pStruct_) //printf("free memory"); if(_pStruct_ != NULL){ free(_pStruct_); _pStruct_ = NULL;}
其实就是一个空定义了,free被注释掉了,内存得不到释放,可能就会造成内存泄露了