2013-09-30 55 views
0

为什么编译源代码,当它与长城选项启用,调用某些功能会产生这样的警告如 warning: incompatible implicit declaration of built-in function 'strcpy' [enabled by default]|"警告:默认情况下启用]

我的内置函数“功能XYZ”的不兼容的隐式声明查阅了该功能并添加了标题,警告消失了。当(显然)不需要时添加标头的优点和缺点是什么?

+1

您应该考虑升级到C99编译器。使用GCC很容易:只需下载最新版本并用'-std = c99'编译。 – Lundin

+0

[warning:内置函数'xyz'的不兼容隐式声明]的可能重复(http://stackoverflow.com/questions/977233/warning-incompatible-implicit-declaration-of-built-in-function-xyz) 。 –

+0

除了上面提到的之外,许多[在StackOverflow上搜索此消息]的结果(http://stackoverflow.com/search?q=warning%3A+incompatible+implicit+declaration+of+built-in +函数+是%3Aquestions)也可以被认为是重复的。 –

回答

8

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

3

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

0

因为所有strcpy,strcat都内置函数。它直接查找文件string.h

相关问题