「string.h」が含まれていても、strlcpyおよびstrlcatの暗黙的な宣言


9

関数strlcpyまたはstrlcatCファイルを呼び出そうとすると、Gccがエラーをスローします。

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

どのライブラリにこれらの関数とそのmanページがありますか?含めましたstring.hが、何も変わりません。Linux Mint 17.2とgcc 4.8.4を実行しています


1
man strlcpyマニュアルページを表示します。コードに問題がある場合は、コード投稿し、コンパイラーのコマンドラインを投稿して、Stack Overflowで実行する必要があります。プログラミングに関する質問はここではトピックから外れているためです。
Gilles「SO-邪悪なことをやめよう」

1
strlcpy()および同様のものがほとんどのUNIXバリアントのlibcで利用可能です。Linuxは例外です。以前のglibcメンテナは、理由を説明したり、より良いコンセプトを指摘したりすることはできませんでしたが、Linuxを好きではなかったためです。Linuxに移植するソフトウェアは通常、これらの関数の独自のバージョンを実装します。
2015

回答:


14

Ubuntuの、ミント、そして親戚には、strlcpystrlcatに用意されていlibbsd-devたパッケージ。走る

sudo apt-get install libbsd-dev

これにより、ライブラリ、ヘッダーファイル、およびマニュアルページがインストールされます。

Cコードの関数を使用するには、次の行を追加します

#include <bsd/string.h>

ライブラリにリンクするために、コマンドラインに-lbsd、またはよりポータブルなをファイルに追加$(pkg-config --libs libbsd)しますgcc

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.