Khai báo ngầm định về strlcpy và strlcat ngay cả với chuỗi String.h


9

Gcc đưa ra lỗi khi tôi cố gắng gọi các hàm strlcpyhoặc strlcattrong tệp C:

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

Trong thư viện nào tôi có thể tìm thấy các chức năng đó, và trang người đàn ông của họ? Tôi đã bao gồm string.hnhưng nó không thay đổi bất cứ điều gì. Tôi đang chạy Linux Mint 17.2 và gcc 4.8.4


1
man strlcpysẽ hiển thị trang người đàn ông của họ. Nếu bạn gặp vấn đề với mã của mình, bạn cần đăng mã , đăng dòng lệnh của trình biên dịch và thực hiện trên Stack Overflow vì các câu hỏi lập trình không có chủ đề ở đây.
Gilles 'SO- ngừng trở nên xấu xa'

1
strlcpy()và tương tự có sẵn trong libc trên hầu hết các biến thể UNIX. Linux là một ngoại lệ vì một người duy trì glibc trước đây không thích họ mặc dù anh ta không thể giải thích tại sao hoặc chỉ ra một khái niệm tốt hơn. Phần mềm chuyển sang Linux thường thực hiện các phiên bản riêng của các chức năng này.
schily

Câu trả lời:


14

Trên Ubuntu, Mint và người thân, strlcpystrlcatcó sẵn trong libbsd-devgói . Chạy

sudo apt-get install libbsd-dev

Điều này sẽ cài đặt các thư viện, tệp tiêu đề và trang man.

Để sử dụng các chức năng từ mã C, thêm dòng

#include <bsd/string.h>

vào các tệp của bạn và thêm -lbsdhoặc di động hơn $(pkg-config --libs libbsd)vào gccdòng lệnh của bạn để liên kết thư viện.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.