Установить путь к файлу на основе ОС в C ++ - PullRequest
0 голосов
/ 26 октября 2018

Я хочу установить путь к файлу в зависимости от операционной системы в C ++.

Я исследовал способы сделать это с помощью вызова препроцессора, но не знаю, как это поможет мне установить путь к файлу в самой программе.

Псевдокод примерно такой:

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

Я надеюсь, что кто-то умнее меня сможет направить меня к наилучшему способу достижения этой цели. Спасибо!

1 Ответ

0 голосов
/ 26 октября 2018

Препроцессор работает во время компиляции.Как только компилятор завершает работу, финальная исполняемая версия программы завершается.Этот исполняемый файл будет работать только на одной платформе (Windows, Mac или Linux).

Таким образом, нет необходимости проверять, какой тип хоста вы используете во время выполнения.

Код, который вы написалипоявляется для проверки типа хоста во время выполнения кода.Это не является необходимым или уместным в C ++.Язык, подобный c #, который создает байт-код, который можно интерпретировать на любой из трех платформ, будет проверять тип хоста во время выполнения, но не C ++.

Вот пример заголовка, который проверяет тип хоста, ввремя компиляции с использованием препроцессора (взято из Как надежно определять препроцессор Mac OS X, iOS, Linux, Windows in C? ):

#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

Я все еще немного сбит с толкуваш вопрос.Вы запрашиваете правильный метод установки пути к файлу для каждой операционной системы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...