为什么在启用Wall选项的情况下编译源代码时,调用某些函数会产生警告,例如
warning: incompatible implicit declaration of built-in function 'strcpy' [enabled by default]|"
我查看了该功能并添加了标题,警告消失了。当(显然)不需要时添加标题的优缺点是什么?
答案 0 :(得分:8)
没有“利弊”。在使用其中声明的函数之前,必须始终包含标题。你应该认为这是一个彻头彻尾的错误。 C允许“隐式声明”这一事实是一个历史遗迹,永远不应该在实际代码中使用。
答案 1 :(得分:3)
当您忘记包含标头时,编译器假定该函数的返回类型为int
,这称为隐式声明。建议是不要使用它,因为它容易出错并且自C99以来就被删除了。
答案 2 :(得分:0)
因为所有strcpy,strcat都是在函数中构建的。它直接查找文件string.h