警告:内置函数'function xyz'的不兼容隐式声明[默认启用]

时间:2013-09-30 14:02:39

标签: c gcc

为什么在启用Wall选项的情况下编译源代码时,调用某些函数会产生警告,例如 warning: incompatible implicit declaration of built-in function 'strcpy' [enabled by default]|"

我查看了该功能并添加了标题,警告消失了。当(显然)不需要时添加标题的优缺点是什么?

3 个答案:

答案 0 :(得分:8)

没有“利弊”。在使用其中声明的函数之前,必须始终包含标题。你应该认为这是一个彻头彻尾的错误。 C允许“隐式声明”这一事实是一个历史遗迹,永远不应该在实际代码中使用。

答案 1 :(得分:3)

当您忘记包含标头时,编译器假定该函数的返回类型为int,这称为隐式声明。建议是不要使用它,因为它容易出错并且自C99以来就被删除了。

答案 2 :(得分:0)

因为所有strcpy,strcat都是在函数中构建的。它直接查找文件string.h