gcc VS msvc

Тема в разделе "WASM.HEAP", создана пользователем cupuyc, 29 окт 2009.

  1. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    вобщем так сложилось что я пользуюсь приемущественно msvc. gcc только когда необходимо написать апликуху для микроконтроллера. но вот решил попробовать.

    собственно хочу услышать все "за" и "против".

    что мне не понравилось:
    - дурацкий вызов функций. аргументы в функции передаёт не пушем, а через mov [esp + ..], val. я х.з. может есть какие-то настройки компилятора чтобы более-менее оптимизировать код (-O не предлагайте - не помогает).
    - не знаю как для архитектуры x86, но для микроконтроллеров оптимизацию задавать нельзя вообще - иначе половина программы просто не будет работать.
    - не смог найти нормальную среду разработки. под "нормальной" я понимаю удобную навигацию по коду со всякими go to definition, open file и т.д.
    - почему-то стандарты языка С++ gcc и visual C отличаются. код написанный на gcc на vc, как правило, вообще не компилится.

    что мне понравилось:
    - поддерживает множество процессорных архитектур. пиши хоть под арм, хоть под авр.

    хотелось бы также услышать сравнительную характеристику gcc и msvc.
     
  2. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    есть только один стандарт С++
    и он поддерживается gcc

    сам юзал бы gcc если бы было нормальное IDE под винду
     
  3. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
     
  4. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    а если погуглить? вопрос в инете поднимался нцать раз ведь. ну, к примеру, чем плох codeblocks?

    нижеследующая фраза также верна:
    а код, написанный на vc, как правило, не компилится на gcc.

    но это не аргумент в пользу gcc, равно как и ваша фраза выше не явл. аргументом в пользу vc.

    у MS полно своих заморочек, прагм, своих "secured" ф-ций и соглашений. всё это никак не по стандарту С++.
     
  5. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    varnie
    однако надо отметить, что microsoft-specific функции и расширения языка, очень удобны.
    всякие #pragma once, #pragma pack(), __asm, __asm{} и т.п.

    чем плох codeblocks
    поюзай немного msvc2008+VisualAssistX и ты поймешь чем он плох
     
  6. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    GoldFinch
    ну, как говорится, "вам шашечки, или ехать?" :)
     
  7. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    cupuyc
    Для начала уточни версии обоих, они весьма отличаются.

    Это эффективнее для многих процессоров.

    под x86 никаких проблем с оптимизацией, под остальное - не пробовал.

    Ни фига себе! Да у MS самый юсабельный IDE из всех, что мне попадались (а попадалось - ох, много...)
    Правда я не пользуюсь большинством свистелок-перделок.
    А какой приличный IDE есть для gcc? Я в основном пользовался Eclipse и Code::Blocks, но до MS они честно говоря не дотягивают...

    Стандарт языка один - ISO/IEC 14882-2003. Если писать строго по нему - компилировать будут оба. (Ну, бывают редкие печальные исключения)

    Зависит от версий. Я бы сказал, что чисто оптимизирующая способность у gcc выше, но MS зато умеет отлавливать паттерны, за счет чего частенько выигрывает.
     
  8. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    посылать меня в гугл за IDE не нужно. CodeBlocks, Eclipse, DevCPP я юзал и не в восторге от них.
    что касается фразы
    - это я вообще не понимаю к чему. именно их я и юзаю и особых нареканий у меня нет (нарекания, конечно, есть, но это по большому счёту мелочи).
    что же касается некомпилябельного кода, не знаю, насколько рабочий примерчик, но недавно я пытался скомпилить gcc'шную прогу и заметил такую проблему:

    Код (Text):
    1. for (int i = 0; ...){ ... }
    2. i = 3;
    в gcc такой код компилися (я не пробовал скомпилить, но сорцы были под gcc). но, в msvc код не компилится, т.к. переменная i вышла из зоны видимости. а как по стандарту?
     
  9. letopisec

    letopisec New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2004
    Сообщения:
    228
    cupuyc
    в msvs2003 компилится, в msvs > 2003 не комилится.
     
  10. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    letopisec
    Я бы сказал в 2002.

    cupuyc
    Нет конечно. Версия gcc? Всё же корректней g++.
     
  11. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
    Scope в циклах не компилируется по дефолтным опциям - опцию сменить на "как по старому" и всё компилится без проблем даже в 2008-м.
     
  12. W4FhLF

    W4FhLF New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2006
    Сообщения:
    1.050
    По стандарту компилироваться и не должен. Иначе каша будет. В нормальном коде так писать нельзя.
     
  13. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    cupuyc
    >я не пробовал скомпилить, но сорцы были под gcc
    А, тогда понятно. gcc, так-же как и другие компиляторы, существовал ещё до принятия стандарта. Это под какую-нибудь 2.x версию.
     
  14. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    cupuyc
    -mpush-args
    Какая версия GCC, кстати?

    Eclipse c последним CDT, IMHO, вполне приличное IDE, по указанным критериям.
     
  15. redcat

    redcat New Member

    Публикаций:
    0
    Регистрация:
    20 ноя 2007
    Сообщения:
    62
    Поддерживаю
     
  16. letopisec

    letopisec New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2004
    Сообщения:
    228
    и отстойным дебаггером...
     
  17. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    В вмзуал студии работать без асистанса вообще не возможно, так что не надо нам сказки про серых бысков (кому возможно таму и кодеблока хватит)
     
  18. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    gdb крут.
     
  19. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Проблема в том что писать по стандарту не всегда получается.
    В стандарте к примеру не определены средства для указания выравнивания.
    И что делать если надо его указать?
    А расширения у всех разные - кто что сочинил, то и использует.
     
  20. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    SPA
    Я слез с VAX года 4 назад. Лучше встроенный IntelliSense, который иногда иногда не выдаёт подсказки, чем VA, который иногда выдаёт неправильные подсказки.
    А в VS 2010 в VA будет уместной разве что раскраска кода и прочие второстепенные ф-ции.