NULL的特别用法

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

编译程序能够检查出以下while 循环错放了一个分号:

/* memcpy 复制一个不重叠的内存块 */

void* memcpy(void* pvTo, void* pvFrom, size_t size)

{

byte* pbTo = (byte*)pvTo;

byte* pbFrom = (byte*)pvFrom;

while(size-->0);

*pbTo++ = *pbFrom++;

return(pvTo);

}

我们从程序的缩进情况就可以知道while 表达式后由的分号肯定是个错误,但编译程

序却认为这是一个完全合法的while 语句,其循环体为空语句。由于有时需要空语句,有

时不需要空语句,所以为了查出不需要的空语句,编译程序常常在遇到空语句时给出一条

可选的警告信息,自动警告你可能出了上面的错误。当确定需要用空语句时,你就用。但

最好用NULL 使其明显可见。例如:

char* strcpy(char* pchTo, char* pchFrom)

{

char* pchStart = pchTo;

while(*pchTo++ = *pchFrom++)

NULL;

Return(pchStart);

}

由于NULL 是个合法的C 表达式,所以这个程序没有间题。使用NULL 的更大好处在于

编译程序不会为NULL 语句生成任何的代码,因为NULL 只是个常量。这样,编译程序接受

显式的NULL 语句,但把隐式空语句自动地当作错误标出。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航