Khi lập trình C đơn giản, tôi cũng gặp phải thử thách tương tự. Trên hệ thống Linux cụ thể của bạn, thư mục / usr / include chứa nhiều tệp tiêu đề ở đây dành riêng cho HĐH Linux.
find . -name "*.h" | xargs grep PATH_MAX
Bạn sẽ thấy một số tiêu đề xác định PATH_MAX; tiếc là giá trị này được định nghĩa khác nhau trong các tiêu đề khác nhau. Đây là danh sách từ Ubuntu của tôi (tôi cũng đã xóa thủ công một số lần truy cập dương tính giả khỏi chương trình grep).
./x86_64-linux-gnu/bits/posix1_lim.h:#define _POSIX_PATH_MAX 256
./X11/InitialI.h:#ifndef PATH_MAX
./X11/InitialI.h:#define PATH_MAX 512
./X11/InitialI.h:#ifndef PATH_MAX
./X11/InitialI.h:#define PATH_MAX MAXPATHLEN
./X11/InitialI.h:#define PATH_MAX 1024
./X11/Xos.h:# define PATH_MAX 4096
./X11/Xwindows.h:#if defined(WIN32) && (!defined(PATH_MAX) || PATH_MAX < 1024)
./X11/Xwindows.h:# undef PATH_MAX
./X11/Xwindows.h:# define PATH_MAX 1024
./X11/Xosdefs.h:# ifndef PATH_MAX
./X11/Xosdefs.h:# define PATH_MAX 4096
./X11/Xosdefs.h:# ifndef PATH_MAX
./X11/Xosdefs.h:# define PATH_MAX 1024
./X11/extensions/XKBsrv.h:#define PATH_MAX MAXPATHLEN
./X11/extensions/XKBsrv.h:#define PATH_MAX 1024
./python2.7/osdefs.h:#ifndef PATH_MAX
./python2.7/osdefs.h:#define PATH_MAX MAXPATHLEN
./python2.7/osdefs.h:#if defined(PATH_MAX) && PATH_MAX > 1024
./python2.7/osdefs.h:#define MAXPATHLEN PATH_MAX
./linux/limits.h:#define PATH_MAX 4096 /* # chars in a path name including nul */
./linux/btrfs.h:#define BTRFS_INO_LOOKUP_PATH_MAX 4080
./linux/un.h:#define UNIX_PATH_MAX 108
Tiêu đề /linux/limits.h có số lượng lớn nhất và phải là tiêu đề xác thực nhất để bao gồm. Chiến lược thay thế là xác định tên riêng của bạn bằng một tên khác, chẳng hạn PATHLEN (4080 đủ dài cho hầu hết các tình huống thực tế). Điểm chính của tôi là học cách sử dụng find để tìm câu trả lời cho câu hỏi của bạn.