Как включить разные заголовки в зависимости от моей ОС? - PullRequest
13 голосов
/ 24 мая 2011

Я пишу переносимое приложение на C ++.Как включить разные заголовки в зависимости от операционной системы, на которой она запущена.Есть ли способ сделать это в C ++ или мне нужно использовать систему сборки?

Ответы [ 3 ]

11 голосов
/ 24 мая 2011

с препроцессором:

#ifdef _SUNOS
//code
#elseif _LINUX
//code
#elseif _HPUX
//code
#elseif _WIN32
//code
#else
#error OS not supported
#endif
8 голосов
/ 24 мая 2011

Я бы использовал директивы препроцессора и кроссплатформенную систему сборки, такую ​​как 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.

4 голосов
/ 24 мая 2011

Мы разрабатываем для Linux (Red Hat Enterprise 5), Sun (Solaris) и Windows.Наша система должна использовать что-то вроде этого:

#ifndef MSWINDOWS
#include <unistd.h>
#else
#include <winbase.h>
#endif
//More includes here
...