С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
О каком "проигрыше" речь, когда исходники обоих стандартов компилирует один и тот же компилятор, создающий из обоих вариантов один и тот же код, а разница только в удобстве синтаксиса у варианта C++.
C-подмножество C++ - это и есть то самое добавление нормальной функциональности в кривоногий синтаксис ванильного C, без которого о нормальном программировании говорить сложно.
Но помимо этого - при C-программировании на C++, появляется возможность использовать и некоторые простые "плюсы" расширенного стандарта. Хороший пример - задание начальных значений полей структур.
Вариант ванильного C:
Вариант здорового C ( т.е. C++ ):Код:struct s { int one; int two; }; struct s *pS1 = (struct s*) malloc( sizeof(s) ); (*pS1).one = 1; (*pS1).two = 2; struct s *pS2 = (struct s*) malloc( sizeof(s) ); (*pS2).one = 1; (*pS2).two = 2;
Код:struct s { int one; int two; s(): one(1), two(2) {} }; struct s *pS1 = new s; struct s *pS2 = new s;
Удобство синтаксиса не зависит от реализации - у "здорового C" синтаксис гораздо удобнее, чем у ванильного, а при компиляции одинаковых программ - код получается одинаковым.
Можно внимательнее рассмотреть пример с начальными значениями полей структур. Возможно это не бросается в глаза, но нормальный оптимизирующий компилятор сгенерит из обоих исходников одинаковый код - разница будет только в том, что у "здорового C" в исходнике нет ручных присваиваний значений полям после создания каждой структуры - компилятор вставит нужный код сам, воспользовавшись информацией из описания структуры.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)