Deklarasi implisit dari strlcpy dan strlcat bahkan dengan "string.h" disertakan

9

Gcc melempar kesalahan ketika saya mencoba memanggil fungsi strlcpyatau strlcatdalam file C:

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

Di perpustakaan apa saya dapat menemukan fungsi-fungsi itu, dan halaman manualnya? Saya termasuk string.htetapi tidak mengubah apa pun. Saya menjalankan Linux Mint 17.2 dan gcc 4.8.4

Bilow
sumber
1
man strlcpyakan menampilkan halaman manual mereka. Jika Anda mengalami masalah dengan kode Anda, Anda perlu memposting kode , memposting baris perintah kompiler , dan melakukannya di Stack Overflow karena pertanyaan pemrograman di luar topik di sini.
Gilles 'SO- stop being evil'
1
strlcpy()dan yang serupa tersedia dalam libc pada sebagian besar varian UNIX. Linux merupakan pengecualian karena mantan pengelola glibc tidak menyukai mereka meskipun ia tidak dapat menjelaskan mengapa atau menunjukkan konsep yang lebih baik. Perangkat lunak yang port ke Linux biasanya mengimplementasikan versi sendiri dari fungsi-fungsi ini.
schily

Jawaban:

14

Di Ubuntu, Mint, dan kerabat, strlcpydan strlcattersedia dalam libbsd-devpaket . Lari

sudo apt-get install libbsd-dev

Ini akan menginstal perpustakaan, file header, dan halaman manual.

Untuk menggunakan fungsi dari kode C, tambahkan baris

#include <bsd/string.h>

ke file Anda, dan tambahkan -lbsd, atau lebih portabel $(pkg-config --libs libbsd), ke gccbaris perintah Anda untuk menautkan perpustakaan.

Tandai Plotnick
sumber