Il modo portatile per farlo è:
#define _POSIX_C_SOURCE 1
#include <limits.h>
Specifiche:https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html
È in linux/limits.h
.
#define PATH_MAX 4096 /* # chars in a path name including nul */
#include <linux/limits.h>
char current_path[PATH_MAX];
PATH_MAX
ha alcuni difetti come menzionato in questo blog (grazie paulsm4)
Tieni presente che non è ancora chiaro se PATH_MAX
definisce una lunghezza massima con o senza un byte nul finale. Potrebbe essere l'uno o l'altro su diversi sistemi operativi. Se non puoi o non vuoi controllare quale maiuscolo è durante la compilazione, è più sicuro forzare il limite artificiale di PATH_MAX - 1
. Meglio prevenire che curare. (Ovviamente, devi ancora prenotare almeno PATH_MAX
byte di memoria per bufferizzare la stringa.)