三、常見gcc編譯警告整理以及解決方法
1、warning: no newline at end of file
在文件最后一行加上回車鍵
解釋:在《Rationale for the C99 standard》一文中,有C99的相關信息:
A backslash immediately before a newline has long been used to continue string literals, as well as preprocessing command lines. In the interest of easing machine generation of C, and of transporting code to machines with restrictive physical line lengths, the C89 Committee generalized this mechanism to permit any token to be continued by interposing a backslash/newline sequence.
c/c++代碼的每一行后面有一個“結束符”,也就是newline。避免當被include的文件展開后,前一個文件的最后一行與后一個文件的第一行直接被連接成一行從而造成錯誤。
2、warning: comparison between pointer and integer
解釋:integer與pointer比較
3、 warning: assignment discards qualifiers from pointer target type
解釋:賦值時,取消了右值的限定。
4、 warning: passing argument 1 of ‘send’ makes pointer from integer without a cast
解釋:函數send的第一個integer型參數沒有強制轉換為pointer型
5、warning: comparison is always true due to limited range of data type
解釋:由于數據類型范圍的限制,比較結果一直為真。
6、warning: initialization from incompatible pointer type
解釋:不兼容指針類型的初始化
7、 warning: return makes pointer from integer without a cast
解釋:return使integer轉換為pointer,沒有加強制類型轉換。
8、warning: incompatible implicit declaration of built-in function ‘printf’
解釋:與內置的printf函數隱士聲明不兼容。
9、warning: initialization discards qualifiers from pointer target type
解釋:initialization取消了指針目標類型的限定。
10、warning: comparison is always false due to limited range of data type
由于類型限制,比較一直是假
11、warning: assignment from incompatible pointer type
不兼容的指針間賦值
12、warning: passing argument 1 of ‘mes_read_time’ discards qualifiers from pointer target type12、
mes_函數第一個參數的傳遞,丟棄了指針目標類型限定。
13、warning: “protocol_type” redefined
——type重定義
14、warning: ‘return’ with a value, in function returning void
在void返回類型的函數中,return返回值。
15、error: expected expression before ‘else’
else之前無表達式。
16、error: lvalue required as left operand of assignment
左值問題。
17、error: invalid storage class for function ‘XXXXXX’
在文件的某個地方,丟失了一個大括號‘}’。
四、Linux編程gcc編譯器禁止所有警告和顯示所有警告
編譯程序的時候,經常會出現警告。不過對于很多經過,程序員經常無視它的存在,甚至覺得警告挺煩人的。
在linux編譯程序時,我們可以很方便的禁止所有警告和顯示所有警告。
gcc編譯器命令選項-Wall 用來顯示所有警告信息,而-w則用來禁止所有警告的顯示。默認是顯示警告的。
警告不是錯誤,所以錯誤會正常的顯示。
下面是命令的使用示例:
顯示所有警告信息
gcc hello.c -o hello -Wall
禁止所有警告信息
gcc hello.c -o hello -w
這是linux編程需要知道的,就在這里記錄一下,以便以后查詢。
評論
查看更多