Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.08.2009, 10:33   #1
AltF4
Новичок
Джуниор
 
Регистрация: 09.08.2009
Сообщений: 3
По умолчанию Определение компилятора

Ради забавы пишу функцию, которая определяет компилятор, на котором она была скомпилирована:
Код:
#include <iostream.h>
int main()
{
    int a=1, b=2, c=3;
    (c=a)=(b=a=b)=c;

    if (a==2 && b==1 && c==1)
    {
        cout << "GNU GCC or Intel C++ Compiler" << endl; 
        return 0;
    }

    if (a==2 && b==2 && c==2) 
    {
        cout << "Microsoft Visual C++ Compiler" << endl;
        return 0;
    }

    if (a==2 && b==3 && c==2)
    {
        cout << "Borland C++ Compiler" << endl;
        return 0;
    }

    if (a==2 && b==3 && c==3)
    {
        cout << "Open Watcom Compiler" << endl;
        return 0;
    }


    cout << "Uncnown Compiler" << endl;
    return 0;
}
Digital Mars вобще отказывается этот код компилировать, по этому он не определяется.

Нужна помощь:
1)добавить определение других компиляторов, которых код еще не определяет (например Cygwin)
2)найти разницу между GCC и Intel компиляторами.

Для того, чтобы добавить новый компилятор, надо скомпилировать и запустить на нем следующий код:
Код:
#include <iostream.h>
int main()
{
    int a=1, b=2, c=3;
    (c=a)=(b=a=b)=c;
    cout << "a=" << a << "\nb=" << b << "\nc=" << c << endl;
    return 0;
}
и, в зависимости от результата работы кода, добавить еще одно условие в первый приведенный мной код.
AltF4 вне форума Ответить с цитированием
Старый 11.08.2009, 10:56   #2
ISergeyN
Maniac
Форумчанин
 
Аватар для ISergeyN
 
Регистрация: 03.01.2009
Сообщений: 450
По умолчанию

Код:
#ifdef __INTEL_COMPILER

printf("__INTEL_COMPILER = %d\n", __INTEL_COMPILER);

#else

printf("__INTEL_COMPILER is not defined.\n");

#endif
Смотри документацию по каждому компилятору..
Стандартные библиотеки разработаны с учетом многолетнего опыта лучших программистов и они не больны "детскими болезнями крутизны в программизме"....

Последний раз редактировалось ISergeyN; 11.08.2009 в 11:03.
ISergeyN вне форума Ответить с цитированием
Старый 11.08.2009, 11:05   #3
AltF4
Новичок
Джуниор
 
Регистрация: 09.08.2009
Сообщений: 3
По умолчанию

Так не интересно.

Последний раз редактировалось AltF4; 11.08.2009 в 11:07.
AltF4 вне форума Ответить с цитированием
Старый 11.08.2009, 11:08   #4
ISergeyN
Maniac
Форумчанин
 
Аватар для ISergeyN
 
Регистрация: 03.01.2009
Сообщений: 450
По умолчанию

Цитата:
И не везде такой метод будет работать. Например здесь: http://codepad.org/
Мне показало __INTEL_COMPILER is not defined... Работает..
Цитата:
Так не интересно.
А по другому ни как..
Стандартные библиотеки разработаны с учетом многолетнего опыта лучших программистов и они не больны "детскими болезнями крутизны в программизме"....
ISergeyN вне форума Ответить с цитированием
Старый 11.08.2009, 11:11   #5
AltF4
Новичок
Джуниор
 
Регистрация: 09.08.2009
Сообщений: 3
По умолчанию

Цитата:
Сообщение от ISergeyN Посмотреть сообщение
Мне показало __INTEL_COMPILER is not defined... Работает..
да, работает, это я просто первый раз ступил, не написа main, вот оно и не запустилось
AltF4 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание компилятора Crivel Софт 7 23.01.2010 18:29
Смена Компилятора olesja Общие вопросы C/C++ 1 21.02.2009 10:53
директивы компилятора delphin100 Общие вопросы Delphi 4 07.10.2008 12:35
Исходники компилятора Simply-Art Свободное общение 1 08.07.2008 13:17
Ошибка компилятора??? KIRILL_FR Общие вопросы Delphi 10 25.04.2008 13:38