Thu, 18 Nov 2004 13:17:55 +0000 (UTC) Alexey Kovalev wrote to Alexey Musin:
AK>>> Hу и где для 16-ти разрядных реализован полный Це++ ? AM>> С++ есть даже для 8-битников (делает IAR),
AK> IAR-ом пользовался. Там от ++ чуть.
Во-первых, IAR'ы бывают разные - разные версии, под разные платформы. И ++ там уже прилично. Например, в версиях для АРМ и MSP430 нет только по-настоящему тяжелых и накладных вещей (за исключением, пожалуй, множественного наследования).
AM>> не гpя yже об MSP430 и пpочая. AM>> Он не "полный" С++, но yже и не EC++, т.к. в нем есть шаблоны.
AK> А чего, к примеру, нет?
Так ты не знаешь? А с чего тогда замечания "Там от ++ чуть"?
Докладываю: там нет трех вещей 1) исключений, 2) информации о типе во время выполнения, 3) множественного наследования.
По первым двум вещам - однозначно правильно. Это вещи толстые, накладные, из-за чего их полезность в ембеддед очень сомнительна. Множественное наследование можно было бы и включить. Почему этого (пока) нет, думаю, из-за усложнения компилятора. Думаю, со временем включат и это. Не так давно был только лишь ЕС++, где не было ни шаблонов, ни пространств имен, хотя ни то, ни другое не дает никаких накладных расходов. И эти вещи действительно полезны и удобны (к месту). Лично мне очень не хватало шаблонов.
AM>> В g++ вpоде весь стандаpт,
На самом деле тоже есть ограничения. Например, afair, avr-gcc тоже не поддерживает исключения и RTTI (и правильно!).
AM>> только нахеpа обpаботка исключений и RTTI для embedded пpименений?
AK> Для embedded очень полезно, к примеру inline ф-ии. Перегрузка AK> операторов тоже весьма полезна если приходится выражения с комплексными AK> числами использовать.
:) Это все есть. Это все было сразу и с самого начала. Чего не было, выше перечислено.
AK> Да и обработка исключений - как реализована. По сути это просто выход AK> сразу из многих уровней вложенности (упрощённо). Вроде не должна много AK> места занимать .Удобно было бы.
У ты какой! Обработка исключений - это далеко не "просто выход сразу из многих уровней вложенности". Это довольно нетривиальный в реализации механизм раскручивания стека - нужно на каждом уровне вызвать деструкторы всех созданных на этом уровне объектов. Это тянет приличные накладные расходы по памяти, коду и слабопредсказуемое время выполнения, что (особенно последнее) плохо согласуется с ембеддед. Поэтому этого нет, и нафиг оно не надо - ситуации не те. Обработка исключений - это, пожалуй, самое "тяжелое" средство С++, и даже программисты, пишущие для больших машин, стараются не злоупотреблять этим. Особенно, когда быстродействие необходимо.
От себя: ты, я вижу, не слишком-то знаком с языком, и на этом фоне обзывки в адрес автора выглядят не просто грубыми, но просто глупыми. Извини. Лажать всегда легко. Попробуй сделать что-нибудь хотя бы в десятеро менее заметное и значимое!