cppasm Что да, то да. Такой код рекомендуется максимально локализовать, вплоть до выделения в отдельный файл, чтобы полностью переписать при смене платформы. Но это, к сожалению, тоже не всегда возможно. Выравнивание - это вообще беда
ага. просто улетаю от его крутизны. как-то пытался прогу отладить для avr. gcc после оптимизации половину кода сделал неработающей, а попытавшись отладить avr при помощи gdb, я чуть с ума не сошёл. в конце концов заюзал Proteus. после ольки c gdb работать невозможно. студия - всё в одном пакете. хорошо это или плохо - х.з. но если писать только под одну ось, только под одну архитектуру - очень удобно. а тут, блин, поставил gcc - нужна среда разработки. если проект большой (десятки файлов) - тут писать в Emacs уже невозможно. нашёл среду разработки - нужен отладчик. с отладчиком вообще проблема. мне приходится писать различный софт, под различные архитектуры. в итоге для x86, x86-64, PocketPC - msvc. Под авр'ы, арм'ы и прочую хрень - пишу в каком-нибудь Programmer's Notepad, компилю gcc, отлаживаю в Proteus'е.
я имел ввиду "плох code::blocks и т.п." а не msvc с ассистом впринципе каким-нибудь эклипсом или нетбинсом наверное тоже можно пользоваться но для этого надо как-то начать ими пользоваться. а я так и не понял как поставить gcc+mingw+(eclipse|netbeans) под винду. как-то привык к компиляторам+IDE с установкой "из коробки"
блин, ну линуксовщики ведь софт под gcc как-то пишут? значит как-то умеют работать в каком-нибудь там eclips'e. или они только шифруются - пока никто не видит пишут на msvc?
cupuyc Кросплатформные проекты можно делать без привязки к одному компилятору. Например, используя CMake, можно сделать проект, который компилится MSVC под винду, и в gcc - под Linux. Соответственно, разработку такого проекта можно вести в Visual Studio.
И при этом писать для кучи кода по два варианта. Встроенный ассемблер, расширения компилятора, то же выравнивание... Либо куча #ifdef, либо писать разные файлы и выбирать нужный в makefile.
cppasm Сильное преувеличение. не стоит теперь использовать даже в чистых MSVC-проектах, чтобы сохранить возможность компилировать в 64-бит. Код (Text): расширения компилятора, то же выравнивание... Решается макросами, таким образом все компиляторные ifdef будут собраны в одном хедере.
и че за куча кода если не секрет? у меня проэкты под винду можно за вечер под никс перенести а если бы я использовал еще Зтреад (причем весьма удобная весч) то вообще проблем не было
угум. предложение, конечно, хорошее. давно думал над тем как нужно писать софт, чтобы не зацепляться на конкретную платформу.
green К сожалению, все не так просто. Стандартный способ получить упакованную структуру на msvc выглядит так: Код (Text): #pragma pack(push, 1) struct Zu { // ... }; #pragma pack(pop) на gcc: Код (Text): struct Zu { // ... }__attribute__((packed)); Как вы это просто выразите макросами?
cupuyc гы. проще не бывает. компилить не из иде и придерживаться анси, не влепляя кругом расширений. а если и влепляя, то окружая макросами типа #ifdef MSC_VER ... расширение #endif
так ведь один фиг всё очень плохо. хотя бы кодировка. в винде - utf16, в линухе utf-8. ну, можно абстрагироваться каким-нибудь cstring. дальше - апишки - опять проблема со строками. на мой поверхностный взгляд всё получается через жп.
Ustus Например, так: Код (Text): #if defined _MSC_VER #define PACKED_STRUCT_PROLOGUE __pragma(pack(push, 1)) #define PACKED_STRUCT_EPILOGUE __pragma(pack(pop)) #elif defined __GNUC__ #define PACKED_STRUCT_PROLOGUE #define PACKED_STRUCT_EPILOGUE __attribute__((packed)) //#elif ... //... #endif PACKED_STRUCT_PROLOGUE struct S { //... } PACKED_STRUCT_EPILOGUE;
пишут огромное кучи прог. при чем иногда маленькими тимами, и не шуршат, зато школьники(зачеркнуто) уважаемые люди считают что это импосибл PS естесно обращение не ко все, а к тем кто парит "про кучи кода" и другую ерись
cupuyc а внутре это один и тотже уникод. все эти утф юзаются для вывода онли. чето усложняете вы все както.. строки по-умному надо всегда отделять и кидать в отдельное файло. или я не понял вашей проблемы? вы таки попробуйте. через нек время може и назад в иде не захотите. например, я редактирую в si все что он тянет. компилю из шела в который пропафлены инферновские утили. в них хорошо, что они очень просты, малы, быстры и кросовы.