Linux调试时常见问题,C程序在linux下调试时经常出现的问题
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下调试时经常出现的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Simulink之负载换流式无源逆变电路
- 下一篇: uboot之fastboot烧录镜像