Al hacer programación simple en C, encontré el mismo desafío. En su sistema Linux particular, el directorio / usr / include contiene muchos, aquí archivos de encabezado específicos para un sistema operativo Linux.
find . -name "*.h" | xargs grep PATH_MAX
Debería ver varios encabezados que definen PATH_MAX; desafortunadamente, este valor se definió de manera diferente en diferentes encabezados. Aquí hay una lista de mi Ubuntu (también eliminé manualmente algunos resultados falsos positivos del programa 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
El encabezado /linux/limits.h tenía el número más grande y debería ser el más auténtico para incluir. Una estrategia alternativa es definir el suyo con un nombre diferente, digamos PATHLEN (4080 es lo suficientemente largo para la mayoría de situaciones prácticas). Mi punto principal es aprender a usar Find para buscar respuestas a su pregunta.