linux/macos下path_max需定义_features宏才可用,推荐用pathconf()运行时查询;windows用max_path(260)或长路径前缀\?;跨平台应优先运行时检测并预留余量。

Linux/macOS 下用 PATH_MAX 要小心宏未定义
很多 C++ 代码直接写 PATH_MAX,但实际编译会报错:「PATH_MAX was not declared in this scope」。这不是你漏了头文件,而是 POSIX 规定它「可选」——glibc 默认不暴露,除非明确定义 _GNU_SOURCE 或 _POSIX_C_SOURCE 等特征宏。
正确做法是:
- 在包含任何头文件之前,加
#define _GNU_SOURCE(Linux)或#define _POSIX_C_SOURCE 200809L(macOS/Linux 通用) - 然后
#include <limits.h></limits.h> - 注意:
PATH_MAX是编译期常量,不是函数返回值;它反映内核对单个路径字符串的长度上限(含末尾
