1、warning: assignment makes pointer from integer without a
cast
原因:类型不匹配,如将一个int型数值赋给一个指针类型参数,或char* p = "
",以及运算符优先级弄错,都会出现这样的警报。举例如下:
运算符优先级弄错:
原语句是这样的:
if (str=strstr(tp,"ALLRECORD")!= NULL)
分析:由于!=的优先级高于=,所以会先计算strstr(tp,"ALLRECORD"))!=
NULL这个表达式,这个表达式的计算结果会是TRUE or
FAILUER,也就是int型,而str是char*,所以将int型赋值给char*,难怪会报warning: assignment
makes pointer from integer without a cast这样的错误。
修改:
if ((str=strstr(tp,"ALLRECORD"))!= NULL)
这样就ok了。
将一个int型数值赋给一个指针类型参数:
int code=0;
char* p;
p = code;
一般使用套路:
char *ipstr
= "10.7.1.11";struct in_addr
ipaddr;
unsigned long
ip;if(!inet_aton(ipstr, &ipaddr))
perror("error\n");
ip = ntohl(ipaddr.s_addr);
char* p =
" ":
应改为:char* p = ' ';
有时在用gcc编译时输入gcc -Wstrict-prototypes ,编译器会告诉你问题出在哪里。
2、empty character constant
原因:" "改为' ',有时''应改为'\0'.要记得单引号~~~~~~
如果觉得《Linux调试时常见问题 C程序在linux下调试时经常出现的问题》对你有帮助,请点赞、收藏,并留下你的观点哦!