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

问题描述 投票:0回答:1

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

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

伪代码大致如下:

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

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

c++ windows macos
1个回答
0
投票

预处理器在编译时运行。编译器完成后,将完成程序的最终可执行版本。该可执行文件只能在一个平台(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

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

© www.soinside.com 2019 - 2024. All rights reserved.