NULL的特别用法
来源:互联网 发布:张国立人品知乎 编辑:程序博客网 时间:2024/04/27 08:02
编译程序能够检查出以下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 语句,但把隐式空语句自动地当作错误标出。
/* 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 语句,但把隐式空语句自动地当作错误标出。
- NULL的特别用法
- #define 的特别用法
- ibatis xml特别的用法
- mysql的in和not in的用法(特别注意not in结果集中不能有null)
- JAVASCRIPT中NULL值,特别注意的两点
- time(null)的用法
- time(null)的用法
- NULL的用法
- time(NULL)的用法
- case的一个比较特别的用法
- 特别的用法、特殊的含义
- String的split的特别用法
- 关于Xpath的几点特别用法
- setTimeout() 的用法,特别注意传参数
- 关于break的用法 特别易混淆
- null data frame的用法
- Null对象模式的用法
- sscanf 特别用法
- 匈牙利命名法
- 美发新造型 名家创意示范集锦(图)
- 给你7个快乐的理由
- 十个美容陷阱
- 取指定范围的随机数
- NULL的特别用法
- Web交互-自动完成时代的到来
- unloadmode 参数返回值
- 卡通渲染的3D电影《苹果核战记》
- windows API函数简介
- 呵呵,我的桌布。
- 通过压缩SOAP改善XML Web service性能
- 关于技术支持的一些看法
- Tomcat安装配置及注意事项,jsp,servlet,javabean建立方法及注意事项!