即使包含“ string.h”,strlcpy和strlcat的隐式声明


9

当我尝试调用函数strlcpystrlcat在C文件中时,Gcc引发错误:

error : implicit declaration of strlcpy
error : implicit declaration of strlcat

我可以在哪个库中找到这些功能及其手册页?我包括了,string.h但没有任何改变。我正在运行Linux Mint 17.2和gcc 4.8.4


1
man strlcpy将显示其手册页。如果您的代码有问题,则需要发布代码发布编译器命令行,然后在Stack Overflow上进行处理,因为此处的编程问题不重要。
吉尔(Gilles)“所以,别再作恶了”

1
strlcpy()大多数UNIX变体上的libc中都提供了类似的功能。Linux是个例外,因为前glibc维护者不喜欢Linux,尽管他无法解释为什么或指出更好的概念。移植到Linux的软件通常实现这些功能的自己的版本。
schily

Answers:


14

在Ubuntu上,薄荷,和亲戚,strlcpystrlcat在现有的libbsd-dev。跑

sudo apt-get install libbsd-dev

这将安装库,头文件和手册页。

要使用C代码中的函数,请添加以下行

#include <bsd/string.h>

到您的文件,然后将-lbsd(或更便于移植的)添加$(pkg-config --libs libbsd)gcc命令行以链接库。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.