这个realpath定义的跨平台替代方案?

时间:2017-07-16 04:08:22

标签: c++ visual-c++ mingw realpath

所以,最近有人向我的项目提交了一些错误修复,他们也包含了这个:

#ifdef _MSC_VER
    #ifndef PATH_MAX
    #define PATH_MAX _MAX_PATH
    #endif
    #define realpath(N,R) _fullpath((R),(N),_MAX_PATH)
#endif

问题是我正在使用Code :: Blocks with MinGW,所以当我尝试编译时,它表示根本没有定义realpath()。提交者没有提供任何替代方案,当我尝试在没有MSVC的情况下搜索realpath时,我得到的只是使用带有 MSVC的realpath 。有没有人可以用MinGW代替?

1 个答案:

答案 0 :(得分:1)

realpath()是一个POSIX函数,这就是MinGW找不到它的原因。您可以做的是使用boost :: filesystem库作为跨平台替代方法来查找绝对路径。 boost :: filesystem的教程如下:

http://www.boost.org/doc/libs/1_45_0/libs/filesystem/v2/doc/index.htm#tutorial

boost :: filesystem库上已经存在一些问题。 下面附有一个可能有用的链接:

How do I "normalize" a pathname using boost::filesystem?