gcc VS msvc

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

  1. spa

    spa Active Member

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

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    ctrl+space нажми
     
  3. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    cppasm
    Что да, то да. Такой код рекомендуется максимально локализовать, вплоть до выделения в отдельный файл, чтобы полностью переписать при смене платформы. Но это, к сожалению, тоже не всегда возможно. Выравнивание - это вообще беда :dntknw:
     
  4. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    ага. просто улетаю от его крутизны. как-то пытался прогу отладить для avr. gcc после оптимизации половину кода сделал неработающей, а попытавшись отладить avr при помощи gdb, я чуть с ума не сошёл. в конце концов заюзал Proteus.
    после ольки c gdb работать невозможно.

    студия - всё в одном пакете. хорошо это или плохо - х.з. но если писать только под одну ось, только под одну архитектуру - очень удобно. а тут, блин, поставил gcc - нужна среда разработки. если проект большой (десятки файлов) - тут писать в Emacs уже невозможно. нашёл среду разработки - нужен отладчик. с отладчиком вообще проблема.
    мне приходится писать различный софт, под различные архитектуры. в итоге для x86, x86-64, PocketPC - msvc. Под авр'ы, арм'ы и прочую хрень - пишу в каком-нибудь Programmer's Notepad, компилю gcc, отлаживаю в Proteus'е.
     
  5. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    я имел ввиду "плох code::blocks и т.п." а не msvc с ассистом

    впринципе каким-нибудь эклипсом или нетбинсом наверное тоже можно пользоваться
    но для этого надо как-то начать ими пользоваться. а я так и не понял как поставить gcc+mingw+(eclipse|netbeans) под винду. как-то привык к компиляторам+IDE с установкой "из коробки"
     
  6. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    блин, ну линуксовщики ведь софт под gcc как-то пишут? значит как-то умеют работать в каком-нибудь там eclips'e. или они только шифруются - пока никто не видит пишут на msvc?
     
  7. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    cupuyc
    Кросплатформные проекты можно делать без привязки к одному компилятору. Например, используя CMake, можно сделать проект, который компилится MSVC под винду, и в gcc - под Linux. Соответственно, разработку такого проекта можно вести в Visual Studio.
     
  8. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    И при этом писать для кучи кода по два варианта.
    Встроенный ассемблер, расширения компилятора, то же выравнивание...
    Либо куча #ifdef, либо писать разные файлы и выбирать нужный в makefile.
     
  9. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    cppasm
    Сильное преувеличение.
    не стоит теперь использовать даже в чистых MSVC-проектах, чтобы сохранить возможность компилировать в 64-бит.
    Код (Text):
    1. расширения компилятора, то же выравнивание...
    Решается макросами, таким образом все компиляторные ifdef будут собраны в одном хедере.
     
  10. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    и че за куча кода если не секрет? у меня проэкты под винду можно за вечер под никс перенести а если бы я использовал еще Зтреад (причем весьма удобная весч) то вообще проблем не было
     
  11. cupuyc

    cupuyc New Member

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

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    cupuyc
    qt ) и зтреад ) или просто кутэ
     
  13. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    green
    К сожалению, все не так просто.
    Стандартный способ получить упакованную структуру на msvc выглядит так:
    Код (Text):
    1. #pragma pack(push, 1)
    2. struct Zu
    3. {
    4.     // ...
    5. };
    6. #pragma pack(pop)
    на gcc:
    Код (Text):
    1. struct Zu
    2. {
    3.     // ...
    4. }__attribute__((packed));
    Как вы это просто выразите макросами?
     
  14. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    cupuyc
    гы. проще не бывает. компилить не из иде и придерживаться анси, не влепляя кругом расширений. а если и влепляя, то окружая макросами типа

    #ifdef MSC_VER
    ... расширение
    #endif
     
  15. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    так ведь один фиг всё очень плохо. хотя бы кодировка. в винде - utf16, в линухе utf-8. ну, можно абстрагироваться каким-нибудь cstring. дальше - апишки - опять проблема со строками. на мой поверхностный взгляд всё получается через жп.
     
  16. iZzz32

    iZzz32 Sergey Sfeli

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    355
    Ustus, я, конечно, могу бред сказать, но…
     
  17. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    iZzz32
    Вау! Спасибо, не знал...
    Ну ладно, пример неудачный... :):):)
     
  18. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    Ustus
    Например, так:
    Код (Text):
    1. #if defined _MSC_VER
    2. #define PACKED_STRUCT_PROLOGUE __pragma(pack(push, 1))
    3. #define PACKED_STRUCT_EPILOGUE __pragma(pack(pop))
    4. #elif defined  __GNUC__
    5. #define PACKED_STRUCT_PROLOGUE 
    6. #define PACKED_STRUCT_EPILOGUE __attribute__((packed))
    7. //#elif ...
    8. //...
    9. #endif
    10.  
    11. PACKED_STRUCT_PROLOGUE
    12. struct S
    13. {
    14. //...
    15. } PACKED_STRUCT_EPILOGUE;
     
  19. spa

    spa Active Member

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

    PS естесно обращение не ко все, а к тем кто парит "про кучи кода" и другую ерись
     
  20. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    cupuyc
    а внутре это один и тотже уникод. все эти утф юзаются для вывода онли.
    чето усложняете вы все както.. строки по-умному надо всегда отделять и кидать в отдельное файло.

    или я не понял вашей проблемы?

    вы таки попробуйте. через нек время може и назад в иде не захотите. например, я редактирую в si все что он тянет. компилю из шела в который пропафлены инферновские утили. в них хорошо, что они очень просты, малы, быстры и кросовы.