Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > Выбор ОС на этапе компиляции


Автор: shchur 19.4.2009, 19:48
Доброго времени суток!
Друзья, подскажите если знаете, каким образом можно определить тип операционной системы в коде программы во время компиляции. А точнее какие макросы для этого определяются в ОС?
Суть проблемы в том, что есть ОС МСВС и ОС Alt Linux 4.0 Desktop. Необходимо компилировать одну и туже программу под эти операционные системы, а заголовочные файлы STL несколько отличаются в этих ОС. Например slice_array.h лежит в разных каталогах.
Хотелось бы увидеть что-то вроде этого:

Код

#ifdef ALTLINUX_OS
#include <bits/slice_array.h>
#else
#include <std/slice_array.h>
#endif


Автор: vinick 19.4.2009, 20:37
Код

#include <valarray>

Должно помочь в вашем случае.

А вобще AFAIK нет макросов различающих версии Linux. Если очень надо можно на этапе компиляции определять версию компилятора и libc.

Автор: shchur 20.4.2009, 22:56
Цитата


Код

#include <valarray>


Должно помочь в вашем случае.

А вобще AFAIK нет макросов различающих версии Linux. Если очень надо можно на этапе компиляции определять версию компилятора и libc.


Спасибо за valarray, завтра обязательно попробую. А если не затруднит, напишите каким образом можно определить версию компилятора и libc. Если нельзя разделить ОС, то будем делить по версии компилятора, ведь в данных операционках они разные.

Автор: vinick 20.4.2009, 23:05
Цитата(shchur @  20.4.2009,  22:56 Найти цитируемый пост)
А если не затруднит, напишите каким образом можно определить версию компилятора и libc. Если нельзя разделить ОС, то будем делить по версии компилятора, ведь в данных операционках они разные. 


http://predef.sourceforge.net/index.php - справочник по таким макросам для различных компиляторов, библиотек  и прочего

Автор: shchur 20.4.2009, 23:18
Спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)