เมื่อเขียนโปรแกรม C อย่างง่ายฉันก็พบกับความท้าทายเดียวกัน บนระบบ Linux ของคุณไดเร็กทอรี / usr / include มีไฟล์ส่วนหัวจำนวนมากที่นี่เฉพาะสำหรับ Linux OS
find . -name "*.h" | xargs grep PATH_MAX
คุณควรเห็นส่วนหัวหลายส่วนที่กำหนด PATH_MAX น่าเสียดายที่ค่านี้ถูกกำหนดไว้แตกต่างกันในส่วนหัวที่ต่างกัน นี่คือรายชื่อจาก Ubuntu ของฉัน (ฉันยังลบ Hit positive ที่ผิดพลาดออกจากโปรแกรม 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
ส่วนหัว /linux/limits.h มีจำนวนมากที่สุดและควรเป็นส่วนหัวที่แท้จริงที่สุด กลยุทธ์ทางเลือกคือการกำหนดชื่อของคุณเองโดยใช้ชื่ออื่น PATHLEN (4080 นั้นยาวพอสำหรับสถานการณ์จริงส่วนใหญ่) ประเด็นหลักของฉันคือการเรียนรู้ที่จะใช้การค้นหาเพื่อค้นหาคำตอบสำหรับคำถามของคุณ