|
|
NULL的特别用法 |
|
|
作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站 |
编译程序能够检查出以下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 语句,但把隐式空语句自动地当作错误标出。
|
|
相关文章:相关软件: |
|