Определить тип ОС / компилятор с помощью элегантного кода C / C ++ (особенно gcc / g ++)

Я знаю, что могу определить тип компилятора (например, gcc: http://sourceforge.net/p/predef/wiki/Compilers/). Но как насчет g ++? Могу ли я использовать __GNUC__ макрос также для тестирования, если я использую g ++?

Еще один вопрос по поводу типа ОС. Я знаю, я могу сделать это:

#if defined(__linux__)
/* Linux. --------------------------------------------------- */

#endif

Но как сделать это элегантным решением? Сделать это первой функцией в main? Я имею в виду:

#include <iostream>

int compiler()
{
#if defined (__GNUC__)
return 0;
#elif defined (_MSC_VER)
return 1;
#else
return -1;
#endif;
}

int os()
{
#if defined(_WIN32) || defined(_WIN64)
return 0;
#elif defined(__linux__)
return 1;
#else
return -1;
#endif
}

int main(int argc, char **argv)
{
std::cout << compiler() << "\n";
std::cout << os();
return 0;
}

Является ли приведенный выше код элегантным, или его можно сделать лучше (более переносимым и т. Д.)?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector