Как правильно писать платформо/компиляторо-специфичный код?
Иногда нужно написать код, зависящий от особенностей конкретной ОС или компилятора.
Например, есть некоторая функция foo, и я хочу, чтобы при компиляции этой функции под Windows был подключён заголовочный файл Windows.h, и моя функция foo вызывала некоторые WinAPI-функции из этого файла.
Или, например, если я компилирую foo с помощью g++, то хочу, чтобы foo использовала некоторые интринсики, специфичные для данного компилятора.
Как это правильно/надёжно/просто/принято реализовывать? Как функция foo может определить окружение, в котором она компилируется?
Ответы (1 шт):
Автор решения: user413919
→ Ссылка
Используйте что-то типа такого
#if defined(WIN32) && !defined(UNIX)
/* windows */
#elif defined(UNIX) && !defined(WIN32)
/* linux */
#else
/* other */
#endif