我偶然遇到了这个。在Xcode 5中(在其他版本中未经测试),如果C文件中的第一个函数包含对strlen()
的任何调用,它会向我发出警告Implicitly declaring library function 'strlen' with type 'unsigned long (const char*)'
。但是如果我在任何其他功能中使用strlen
,它就不会给我警告。所以我被迫在我的一个文件的顶部创建一个一次性函数,因为我害怕它会做什么。有没有错误,或者我是不是以某种方式搞砸了?
这是截图。注意test()中的警告但不是main():
答案 0 :(得分:8)
您需要添加
#include <string.h>
到文件的顶部。
没有它,第一次在编译器看到函数的文件中,它将假定它是使用非常旧的C样式参数定义的。关于它将如何工作或将不工作的背景很多,但这可能更适合堆栈溢出。
一般情况下,如果你有一个C函数并且希望看到你需要#include使用它,你可以在终端上做man strlen
。