关于 implicit declaration of function 一点经验之谈

用gcc编译c程序的时候 经常会出现
implicit declaration of function '...' 的warning

偶经过这几天的经验,发现主要有2种情况会产生这种warning

1  没有把函数所在的c文件生成.o目标文件
2  在函数所在的c文件中定义了,但是没有在与之相关联的.h文件中声明


除了以上情况之外,据我所知至少还有另外的情况:所调用的函数的原型与所传的实参类型不匹配.比如下列代码,其头文件都声明过了,但是就是有警告,其编译选项为-O2 -Wall -fPIC -ldl -lusb:
     semtimedop(idSem, &SemOp, 1, &strcTS);
但是如果加入原型声明就可以了:
    int  semtimedop(int  semid, struct sembuf *sops, unsigned nsops, struct timespec *timeout);
以上在RedHat Linux10测试通过.值得一提的是,在Solaris10就没有这方面的问题.

你可能感兴趣的:(c)