Может есть на свете малоизвестный, но хороший С99 компилятор? VS Express урезанный (без SDK даже x64 не может компилить) и всё-равно bloatware. GCC очень медленный и под винду только в виде форка (не гуд). PellesC с первого взгляда казался идеальным, но его код ужасен Код (Text): fldz sub esp,4 fstp esp Прочитал в вики про clang, но он распространяется только в виде исходников. Может кто-нибудь рассказать о нем, как он дружит с виндой? Cупероптимизация кода, как у интеловского компилера, не требуется. Но хотя бы без тупостей как в PellesC. И может быть работа с вещественными данными через SSE, без FPU?
Посмотрел... "Не оптимизируют" это мягко сказано. Пушить 0.0 они не умееют. tcc вообще проявляет верх изобретательности и достает 0.0 из памяти. Ну и просто смешной код: lcc: Код (Text): mov [dword 4023A8],eax mov eax,[dword 4023A8] tcc: Код (Text): mov [dword 402000],45 mov edi,[dword 402000] mov [dword local.1],edi
А это отличная штука! Ему не хватает только x64 и SSE кода. Но всё-равно самое близкое к моим требованиям. Спасибо.
LaoFremda Код (Text): mov [dword 4023A8],eax mov eax,[dword 4023A8] Это Вы смотрите код который с DEBUG INFORMATION. В RELEASE-е такого кода нет.
Возможно... Но и его код иногда выглядит странно (MinGW-4.5.1): Код (Text): 00401753 |. 83EC 18 SUB ESP,18 00401756 |. C74424 0C 04000000 MOV [DWORD SS:LOCAL.3],4 ; /Type => MB_YESNO|MB_DEFBUTTON1|MB_APPLMODAL 0040175E |. C74424 08 70404000 MOV [DWORD SS:LOCAL.4],OFFSET 00404070 ; |Caption => "Test test?" 00401766 |. C74424 04 70404000 MOV [DWORD SS:LOCAL.5],OFFSET 00404070 ; |Text => "Test test?" 0040176E |. C70424 00000000 MOV [DWORD SS:LOCAL.6],0 ; |hOwner => NULL 00401775 |. FF15 F0614000 CALL [DWORD DS:<&USER32.MessageBoxA>] ; \USER32.MessageBoxA 0040177B |. 83EC 10 SUB ESP,10 И весь этот файл состоящий из одного MB и 2 операций с флоатами весит 98 килобайт. :\ Но x64 это не единственный минус. Всё-таки M$ забило на C, поддержка C99 у них практически отсутвует. Попробовал снова. Да, кажется в прошлый раз ошибся. Но с пушами флоатов та же беда. Так это же MSVC++. Всё те же минусы.
2LaoFremda >>Но и его код иногда выглядит странно (MinGW-4.5.1): ну он так передает параметры в функцию по умолчанию, отключается через какойто из параметров. непомню какой. Это нормально короче =) >>Всё-таки M$ забило на C, поддержка C99 у них практически отсутвует. что вам нужно такого из C99 чего нету в cl?
2 all, привет. Ох, не люблю я темы на грани холивара ) Ну да ладно... ИМХО, под виндой лучше юзать WDK и его cl.exe. Это одна из немногих вещей которая у мелкомягких сделана хорошо. Я пользую ключик /Ox и качеством оптимизации доволен (под отладчиком проги вижу часто, на асме тоже "пописывал"). Плюс самые актуальные заголовочные файлы. А как писать: в си или си++ стиле - дело вкуса и личных предпочтений, компилятор никаких ограничений не накладывает. LaoFremda->"Так это же MSVC++. Всё те же минусы." Честно говоря минусов не вижу. Только два плюса
А вспомнить можно? Я попробовал разные параметры - ничего не помогло. Даже -mpush-args ничего не делает. Особо не разбирался с cl. Только читал слова тех поддержки на мсдн, что они не поддерживают С99. Помню, stdbool.h в cl нет. Не представляю поддерживает ли он объявление переменных в любом месте, inline. Всё-таки языки не полностью совместимы, поэтому хочется нормальный C компиллер. А что требовать от разработчика, который сконцентрировался только на двух плюсах?
ух... Ужа начали переходить на личности. Не надо! Сойдемся на том, что лучшее это WDK, GCC и OpenWatcom. Отзывов о LLVM/CLang и PCC нет.
LaoFremda ов - не с99. pcc (не пеллес, а другой), линейка кен-сс (не помню какой там С, но int c[10] = {[5] = 18}; понимает), аск интересны не столько оптимизатором, хотя базовый там есть, сколько малыми размерами и модифицируемостью. кен-сс - по линкеру совместим с го. аск - набор компилеров, интерпреров, оптимайзеров и асмо/кодогенераторов последний список - экзотика. если хватает стандарта - не спрашивайте меня "зачем оно надо?".