在C ++中设置基于OS的文件路径

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在C ++中设置基于OS的文件路径相关的知识,希望对你有一定的参考价值。

我想根据C ++中的操作系统设置文件路径。

我已经研究过使用预处理器调用来完成此操作的方法,但不知道这将如何帮助我在程序本身中设置文件路径。

伪代码大致如下:

string file_path; if WINDOWS_OS: file_path = <windows file path> else if MAC_OS: file_path = <mac file path>

我希望比我更聪明的人能够引导我走向实现这一目标的最佳方式。谢谢!

答案

预处理器在编译时运行。编译器完成后,将完成程序的最终可执行版本。该可执行文件只能在一个平台(Windows或Mac或Linux)上运行。

因此,没有必要在运行时检查您所在的主机类型。

您编写的代码似乎在代码运行时检查主机类型。这在C ++中是不必要或不合适的。像c#这样创建Byte-Code的语言可以在三个平台中的任何一个上解释,它会在运行时检查主机类型,而不是C ++。

下面是一个示例标头,它在编译时使用预处理器(取自How to detect reliably Mac OS X, iOS, Linux, Windows in C preprocessor?)检查主机类型:

#ifdef _WIN32
   //define something for Windows (32-bit and 64-bit, this part is common)
   #ifdef _WIN64
      //define something for Windows (64-bit only)
   #else
      //define something for Windows (32-bit only)
   #endif
#elif __APPLE__
    #include "TargetConditionals.h"
    #if TARGET_IPHONE_SIMULATOR
         // ios Simulator
    #elif TARGET_OS_IPHONE
        // iOS device
    #elif TARGET_OS_MAC
        // Other kinds of Mac OS
    #else
    #   error "Unknown Apple platform"
    #endif
#elif __linux__
    // linux
#elif __unix__ // all unices not caught above
    // Unix
#elif defined(_POSIX_VERSION)
    // POSIX
#else
#   error "Unknown compiler"
#endif

我仍然对你的问题感到困惑。您是否要求为每个操作系统设置正确的文件路径方法?

以上是关于在C ++中设置基于OS的文件路径的主要内容,如果未能解决你的问题,请参考以下文章

在 html 文件中设置默认浏览器的代码

在 OSX 上的 C 代码中设置工作目录

已经有了一个在命令行下调用c++ dll库文件的java程序,如何在eclipse中设置相关路径?

怎么在linux环境变量中设置多个gcc头文件搜索路径?

如何在idea中设置Tomcat虚拟路径

在 Mac OS X Mountain Lion Server 中设置 PHP 路径