移植可能な方法は次のとおりです:
#define _POSIX_C_SOURCE 1
#include <limits.h>
仕様:https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html
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
このブログで言及されているように、いくつかの欠陥があります (thanks paulsm4)
PATH_MAX
かどうかはまだ不明であることに注意してください。 末尾のヌル バイトの有無にかかわらず、最大長を定義します。異なるオペレーティングシステムでは、どちらか一方になる場合があります。コンパイル中にどちらのケースであるかを確認できない、または確認したくない場合は、 PATH_MAX - 1
の人為的な制限を強制する方が安全です。 .転ばぬ先の杖。 (明らかに、少なくとも PATH_MAX
を予約する必要があります。 文字列をバッファリングするメモリのバイト)