Я пишу переносное приложение на С++. Как включить различные заголовки на основе операционной системы. Есть ли способ сделать это на С++ или мне нужно использовать систему сборки?
Как включить различные заголовки на основе ОС?
Ответ 1
с препроцессором:
#ifdef _SUNOS
//code
#elseif _LINUX
//code
#elseif _HPUX
//code
#elseif _WIN32
//code
#else
#error OS not supported
#endif
Ответ 2
Я бы использовал директивы препроцессора и кросс-платформенную систему сборки, такую как CMake. Вы можете сделать:
#ifdef LINUX
#include <unistd.h>
#elif defined(WINDOWS)
#include <algorithm.h>
# elif Defined(MAC_OSX)
//... etc.
#else
#error No operating system defined
#endif
Затем добавьте соответствующий флаг препроцессора в сборку, например: -DLINUX
.
Ответ 3
Мы разрабатываем Linux (Red Hat Enterprise 5), Sun (Solaris) и Windows. Наша система должна использовать что-то вроде этого:
#ifndef MSWINDOWS
#include <unistd.h>
#else
#include <winbase.h>
#endif
//More includes here