龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

16种C语言编译警告(Warning)类型的解决方法(2)

时间:2014-08-21 02:33来源:网络整理 作者:网络 点击:
分享到:
例如: void Func(){ ulong ulParam; ulong ulRetCode;if(…){ ulParam = ……;}if(….){ ulParam = ……;} ulRetCode = ulParam;} 在这种情况下,当两个if()都执行不到的时候,ulParam根

例如:

void Func()
{
  ulong ulParam;
  ulong ulRetCode;
if(…)
{
  ulParam = ……;
}
if(….)
{
  ulParam = ……;
}
  ulRetCode = ulParam;
}

在这种情况下,当两个if()都执行不到的时候,ulParam根本没有被赋值过,这样又去给ulRetCode赋值,就比较危险了。

解决办法: 多留个神,细心一点就可以了。

类型9:
显示: warning: passing arg 1 of 'free' makes pointer from integer without a cast

警告原因: 你free(a),但a是一个unsigned long,你可能把一个指针的数值放在了a里面了。

解决办法: 在free(a)时,需要强制转换a为指针类型的即可。即:free((char*)a)。

类似警告:warning: assignment from incompatible pointer type

warning: initialization from incompatible pointer type

warning:passing arg 2 of 'AOS_MemCopy_X' makes pointer from integer without a cast

类型10:
显示: warning: 'MY_DEBUG' redefined

warning: this is the location of the previous definition

警告原因: 连续出现这种两个警告,可能的一种情况是,你在你的.c文件中包含了两个.h

文件,而这两个.h文件都对MY_DEBUG进行了声明。

解决办法:只在一个文件中声明这种东东。

类型11:
显示:warning: value computed is not used

警告原因:参与运算的值是没有作用的。比如你这样干:

char* p;

*p++;

这样对p根本一点影响也没有。

解决方法:请确定究竟要进行什么运算。

类型12:
显示:warning: '#ifdef' argument starts with a digit

警告原因:出现了#ifdef 0这样的错误

解决方法:应该是#if 0 吧

类型13:
显示:warning: unknown escape sequence '\R'

警告原因:编译器不认识‘\R'。

解决方法:一时笔误,应该是‘\r'。

类型14:
显示:warning:too few arguments for format

警告原因:你有可能这样干了:printf(“%d%s”,uParam);

解决方法:把要的留下,不要的去掉。

类型15:
显示:warning: ‘Func' defined but not used

警告原因:Func 函数你定义了,但是你根本没有使用它。

解决方法:不要的就去掉。

类型16:
显示:warning: suggest parentheses around && within ||

警告原因:有人这么用了

if(( *p >= 'a' ) && ( *p <= 'z' ) || ( *p >= 'A' ) && ( *p <= 'Z' ) || ( *p >= '0' ) && ( *p <= '9' ))

解决方法:你最好这样

if((( *p >= 'a' ) && ( *p <= 'z' )) || (( *p >= 'A' ) && ( *p <= 'Z' )) || (( *p >= '0' ) && ( *p <= '9' )))

精彩图集

赞助商链接