Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

C++ зря стал самостоятельным языком, лучше бы он оставался враппером Си (C++ 2.0, cfront)?

Кууча фон Юча Гуру (3938), закрыт 4 года назад
Лучший ответ
Mikhail Levin Искусственный Интеллект (615365) 4 года назад
он никогда не был "враппером".

Страуструп про эту ошибку не раз писал, она пошла от того, что первые компиляторы с С++ (тогда еще С With Classes) имели кодогенератор, выдававший на выходе не машинный код, а текст на С, что было сделано только для более легкого распространения на начальных этапах.
Кууча фон ЮчаГуру (3938) 4 года назад
Это называется "source to source compiler" и означает впраппер над Си
Mikhail Levin Искусственный Интеллект (615365) это как реализовывать. Враппер - это не полноценный компилятор, он не делает полный синтаксический разбор, только ловит какие-то конструкции и "пересказывает" их на другом языке, такое обычно можно просто на уровне лексического разбора поменять. А у Страуструпа компилятор изначально был полный, с полным разбором, а на чем делать кодогенератор - соврешенно все равно.
Остальные ответы
H-p A Просветленный (46834) 4 года назад
можно подумать его косяков в Си нету

косяки - такие, как:
- case, в котором нельзя объявлять переменную, если не завернуть в {}
- нельзя дважды #define - один всегда и другой по условию - иначе выдаст ошибку, а поскольку #define в крупных проектах обычно в конфиге, который инклюден везде, то весь лог сборки будет засран
Кууча фон ЮчаГуру (3938) 4 года назад
я про то, что C API оказался выброшен и доступен лишь через extern "C"
Животное Мудрец (18897) Вы что-то путаете. extern "C" - это соглашение о вызове. Это нужно только для x86 библиотек, скомпилированных статически. Для новых x86-64 библиотек действует новый AMD x64 ABI интерфейс и буковку "С" можно смело стирать. Для модулей и исходников, компилируемых вместе с проектом, буковка "С" также не имеет особого смысла.
Животное Мудрец (18897) 4 года назад
Си - это "выскооуровневый ассемблер". Это как алфавит. Его конструкции можно найти в любом языке. И компилировать любой язык в Си. Но принципиально это ничего не значит.
Похожие вопросы