常见 gcc 编译错误和警告

一、常见 gcc 编译错误

1.error: expected expression before ‘else’

else之前无表达式。

2.error: lvalue required as left operand of assignment

左值问题。

3.error: invalid storage class for function ‘XXXXXX’

在文件的某个地方,丢失了一个大括号‘}’

4.error: ‘xxx’ undeclared (first use in this function)

(Each undeclared identifier is reported only once

for each function it appears in.)

(1)查看是否声明

(2)确认是否包含了声明所在的头文件


二、常见 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 type

mes_函数第一个参数的传递,丢弃了指针目标类型限定。

13.warning: “protocol_type” redefined

type重定义

14.warning: ‘return’ with a value, in function returning void

void返回类型的函数中,return返回值。

15.warning: implicit declaration of function ‘XXX’

查看声明的头文件,以及被调用之处所在的文件是否包含了该函数的声明头文件。

 (1)没有把函数所在的c文件生成.o目标文件; 
    (2)在函数所在的c文件中声明了,但是没有在调用它的.h或.c文件中声明; 
    (3)其头文件都声明过了,所调用的函数的原型与所传的实参类型不匹配。

分享到:

发表评论

昵称

沙发空缺中,还不快抢~