저는 TDM-GCC(MinGW-w64)를 사용하고 있습니다.
char *_fullpath(char *absPath, const char *relPath, size_t maxLength);
wchar_t *_wfullpath(wchar_t *absPath, const wchar_t *relPath, size_t maxLength);
성공할 경우 반환값은 절대 경로 이름의 포인터(absPath
)이다. 오류가 발생하면 NULL
을 반환한다.
absPath
NULL
일 경우, 결과를 자동으로 동적 할당한다. 이 경우 수동으로 해제해줘야 한다.relPath
NULL
을 반환하여 오류임을 알린다.maxLength
absPath
가 이 값을 초과하면 NULL
을 반환하여 오류임을 알린다.윈도에서 경로 최대 길이는 MAX_PATH
매크로로 정의되어있으며 값은 260
이다.
MinGW를 사용할 경우 limits.h
에서 PATH_MAX
를 사용할 수 있다. 값은 동일하다.
동적 할당하지 않을 경우 충분한 크기의 배열을 만들어둬야 한다.
저는 Ubuntu 20.04에서 GCC를 사용하고 있습니다.
char *realpath(const char *path, char *resolved_path);
성공할 경우 반환값은 절대 경로 이름의 포인터(resolved_path
)이다. 오류가 발생하면 NULL
을 반환한다.
path
errno
와 함께 NULL
을 반환한다.resolved_path
NULL
일 경우, 결과를 자동으로 동적 할당한다. 이 경우 수동으로 해제해줘야 한다.리눅스에서 경로 최대 길이는PATH_MAX
매크로로 linux/limits.h
에 정의되어 있다.
마찬가지로 동적 할당하지 않을 경우 충분한 크기의 배열을 만들어둬야 한다.