PDA

Просмотр полной версии : Компиляторы С


JWalker
15.08.2007, 15:59
У меня тут появилась необходимость подучиться программить на С (для встроенных систем), а до этого я только на Delphi программил. Так вот столкнулся с такой проблемой: для С такое огромное множество компиляторов, да к тому же многие компиляторы С++ тоже, вроде, могут и С-код компилировать. Стал вобщем выбирать и застрял. Подскажите пожалуйста есть ли какая-либо существенная разница между ними (для обучения по-меньшей мере) и существует ли "эталонный" компилятор? А может кто объяснит почему вообще их такое количество для одной и той же платформы???:idontnow:

Borland
15.08.2007, 16:44
Для изучения собственно C/C++ компилятор большого значения не имеет. Язык един (а вот расширения его под каждую из платформ могут быть весьма специфическими).
Учиться лучше сразу на компилляторе, предназначенном под ту программно-аппаратную платформу, для которой собираешься писать - с тем, чтобы вникнуть в специфические расширения.
многие компиляторы С++ тоже, вроде, могут и С-код компилировать.Все могут. C явсяется подмножеством C++.
существует ли "эталонный" компилятор?Вообще - нет. Но, например, для Wintel эталоном является Intel C++ Compiller, а для *NIX - gcc (который, собственно, существует и в версии под Win).

Inside
15.08.2007, 18:11
С является папой С++. Если компилятор ОЧЕНЬ ОЧЕНЬ старый, то о С++ он ничего не знает.
Между самими языками различий очень мало. Что написано на С будет копилиться в большинстве случаев и в компиляторе с С++

Drakosha
15.08.2007, 20:17
Если будешь пользоваться gcc (я - рекомендую) - то используй флаги -ansi -pedantic
С этими флагами будет компилироваться строго C.

PinGUIWin
17.08.2007, 01:03
подучиться программить на С (для встроенных систем)
А можно по подробнее? Это может быть существенно.

Borland, C и C++ -- это разные языки. У них синтаксис похож. Есть программы на C, которые не компилируются C++ компилятором.

JWalker
17.08.2007, 20:21
Ну, в конечном итоге надо будет программировать AVR микроконтроллеры. Я, правда, хотел сначала научиться писать на С в общем. Потому как с языком незнаком абсолютно.
И все-таки непонятно, в чем причина такого количества разных компиляторов для Windows, например. Пытался найти в чем между ними разница, но так толком и не разобрался...

Borland
17.08.2007, 20:37
Есть программы на C, которые не компилируются C++ компилятором. Ага. И есть программы на С++, которые компилируются, к примеру, только в Borland C++ Builder и ни в какую - в Visual C++... Это просто частичная несовместимость диалектов языка...
в чем причина такого количества разных компиляторов для Windows, например Да разве ж их много?:confused:
Основной от M$, существенно от него отстающие интеловский и борландовский и совсем уж маргинальный gcc. Больше ничего в голову не приходит...
M$ делает компилятор под свои оси. Intel - оптимизирующие компиляторы под свои процессоры. Borland делает компилятор под свою идеологию разработки (VCL). gcc фактически линуксовый продукт, серьёзный проект под Win в нём собрать проблематично (зато он хорош для кросплатформенного программирования и портирован практически под все ОС).
Есть определённые различия между компиляторами в плане языка - т.е. у каждого компилятора свой диалект.

JWalker
18.08.2007, 00:04
Да разве ж их много?


Те, что ты назвал + LCC, TCC, Miracle C Compiler...это только те о которых я слышал. Правда я не понимаю в чем между ними разница

Drakosha
18.08.2007, 00:21
Не занимайся фигней (в смысле поиском лучшего компилятора). На сколько я понял, тебе надо учить C. В зубы книжку Керниган и Ричи и вперед, практически любой компилятор подойдет.

Borland
18.08.2007, 00:24
JWalker, _http://www.thefreecountry.com/compilers/cpp.shtml
Это только свободные...
Почему существует столько свободных (и не только) реализаций? Да потому, что часть из них узкоспециализированные, а часть - просто-напросто порождение тщеславия. "Я могу написать компилятор" - и пишет же. А то, что реально этим компилятором кроме автора пользуется 100, пусть даже 1000 человек во всём мире - автора в общем-то не волнует... Тот же TCC писался как наиболее компактный и наименее ресурсоёмкий компилятор, причём изначально только под Linux.
Опять же, "работает под Windows" отнюдь не означает, что на выходе будет программа под Windows...

DAKnn
05.09.2007, 05:20
попробуй от Intel :yees:
>> http://www.intel.com/cd/software/products/asmo-na/eng/compilers/284132.htm

Melkor
07.09.2007, 19:37
Ну, в конечном итоге надо будет программировать AVR микроконтроллеры.
Для AVR есть вроде GCC-AVR (WinAVR кажется тоже зовут).
Тебе надо Керниггана и Ричи как уже советовали и нормальные дебаггер.
Причет последнее обязательно.
Dev C++
MS Studio 2005 Express
довольно неплохие средства разработки со встроенными дебаггерами.
Потому как без дебаггера учиться програмить сложно.

tonynays
20.09.2007, 22:47
Это для х86 такой выбор. А для каждой конкретной embedded платформы от как правило сильно меньше. В большинстве случаев - 1. Как правило - GCC. Хотя для х86 он далеко не самый лучший код генерирует.

А вообще - С он и в Африке С. Какая нафиг разница "для встроенных систем" или для ЗС? Глупости все это. Это как "мне нужно овладеть кухонным ножом фирмы Х". Учись владеть ножом, фирма не важна.

Удачи!

gimmick
22.09.2007, 13:57
Все могут. C явсяется подмножеством C++.

Это не так. Да, С++ сохранил бОльшую часть совместимости с С, но некоторые возможности C в нем не поддерживаются, т.о. он не является надмножеством C. Примеры - объявление функций в старом стиле, кастинг pointer-to-void в pointer-to-type и т.п. Для обучения, на мой взгляд, самый лучший, т.к. у него можно выставить -ansi -Wall -pedantic, что хорошо учит культуре кода имхо. Хотя, по скорости под Win32 я все же предпочитаю Microsoft Compiler...

AlgualKi
24.09.2007, 11:52
Кстати, для встроенных систем есть хорошие средства разработки. Я видел Томпсоновскую. Специально оптимизирована под их железо.
Но если языка не знаешь - садиться за такую бесполезно. Сначала по простому, Здравствуй мир и пр. :)

Vov_St
04.10.2007, 12:56
Нормальный компилятор Builder, это полное подобие Delphi с которым работал человек. И позволяет писать как консольные программы, так и уже существено более серьезные вещи с помощью библиотек компонентов.