Saat melakukan pemrograman C sederhana, saya menghadapi tantangan yang sama. Pada sistem Linux Anda, / usr / include direktori berisi banyak, di sini file header khusus untuk OS Linux.
find . -name "*.h" | xargs grep PATH_MAX
Anda akan melihat beberapa header yang mendefinisikan PATH_MAX; sayangnya nilai ini didefinisikan secara berbeda di header yang berbeda. Berikut ini daftar dari Ubuntu saya (saya juga secara manual menghapus beberapa klik positif palsu dari program 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
Header /linux/limits.h memiliki angka terbesar dan harus yang paling otentik untuk disertakan. Strategi alternatif adalah mendefinisikan milik Anda sendiri dengan nama yang berbeda, katakanlah PATHLEN (4080 cukup panjang untuk kebanyakan situasi praktis). Poin utama saya adalah belajar menggunakan find untuk mencari jawaban atas pertanyaan Anda.