Установите путь к файлу в зависимости от ос в c++

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

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

Псевдокод выглядит примерно так:

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

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

0
0
125
1

Ответы 1

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

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

Написанный вами код, по-видимому, проверяет тип хоста во время выполнения кода. В C++ это не обязательно и не уместно. Такой язык, как C#, который создает байт-код, который можно интерпретировать на любой из трех платформ, будет проверять тип хоста во время выполнения, но не C++.

Вот пример заголовка, который проверяет тип хоста во время компиляции, используя препроцессор (взятый из Как надежно обнаружить Mac OS X, iOS, Linux, Windows в препроцессоре 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

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

Другие вопросы по теме