Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.192] |
|
|
Правила раздела:
| Страницы: (495) « Первая ... 114 115 [116] 117 118 ... 494 495 ( Перейти к последнему сообщению ) |
Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
|
Сообщ.
#1726
,
|
|
|
|
В C/C++ тело функции фактически является составным оператором. {}; в данном контексте - это два выражения - составной оператор и пустой оператор.
|
|
Сообщ.
#1727
,
|
|
|
|
Цитата DesweR @ да, мешает очень ![]() ![]() //вот так можно struct Struct1 { }; void Func1() { } //а так нет struct Struct2 { } void Func2() { }; Да, это единственная проблема в С++ с ; Идет от того, что в С объявление структуры может является частью более сложного объявления: ![]() ![]() struct point{int x; int y;} my_point; Тут идет объявление типа struct point и переменной my_point этого типа. ![]() ![]() typedef struct point{int x; int y;} point; Тут объявляем тип struct point(в С без ++ struct является частью типа) и его синоним - point; Вот и для классов в С++ сделано также, отсюда необходимость ; как знака завершения объявления. Добавлено Кстати, так можно |
|
Сообщ.
#1728
,
|
|
|
|
Цитата D_KEY @ Идет от того, что в С объявление структуры может является частью более сложного объявления: Просто интересно, а C# ничего подобного от С не "унаследовал"? |
|
Сообщ.
#1729
,
|
|
|
|
А ему не очень-то и надо. Сомневаюсь, что требование "компилировать исходники C без их модификации" для него предъявлялось.
P.S. Судя по содержимому стандарта C# - описание типов у него не заканчивается символом ';' Но там и другие отличия от C/C++ в синтаксисе есть. |
|
Сообщ.
#1730
,
|
|
|
|
Цитата amk @ С этим "можно не ставить, нужно ставить, нельзя ставить" в Паскале (и в Delphi тоже) проблем на самом деле больше, чем преимуществ. плюсую. правда в С, С++ мне не понятно, почему после определения например класса нужно ставить ';', а после определения функции -- нет. P.S. а, уже прочитал =)) |
|
Сообщ.
#1731
,
|
|
|
|
Цитата korvin @ С этим "можно не ставить, нужно ставить, нельзя ставить" в Паскале (и в Delphi тоже) проблем на самом деле больше, чем преимуществ. Ну и какие проблемы? |
|
Сообщ.
#1732
,
|
|
|
|
Цитата DesweR @ Цитата korvin @ С этим "можно не ставить, нужно ставить, нельзя ставить" в Паскале (и в Delphi тоже) проблем на самом деле больше, чем преимуществ. Ну и какие проблемы? ![]() проблемы с генерацией паскалекода. все эти "особые случаи" ни разу не способствуют простоте генератора. [offtop] о новом Racket 5.1: "We’ve reimplemented the GUI layer, which meant throwing out about 200,000 lines of C++ code that built on Xt, Win32, and Carbon. We’ve replaced that C++ code with about 30,000 lines of Racket code that builds on Gtk, Win32, Cocoa, Cairo, and Pango." это win ящитаю =) [/offtop] |
|
Сообщ.
#1733
,
|
|
|
|
Цитата korvin @ проблемы с генерацией паскалекода. все эти "особые случаи" ни разу не способствуют простоте генератора. И какие такие "особые случаи"? Последовательности инструкций разделяются точкой с запятой, всё. Добавлено мда... такое ещё не обсуждали, в предвкушении эпического срача на 100500 страниц |
|
Сообщ.
#1734
,
|
|
|
|
Цитата korvin @ "We’ve reimplemented the GUI layer, which meant throwing out about 200,000 lines of C++ code that built on Xt, Win32, and Carbon. We’ve replaced that C++ code with about 30,000 lines of Racket code that builds on Gtk, Win32, Cocoa, Cairo, and Pango." это win ящитаю =) Тема не раскрыта |
|
Сообщ.
#1735
,
|
|
|
|
Цитата DesweR @ Цитата korvin @ проблемы с генерацией паскалекода. все эти "особые случаи" ни разу не способствуют простоте генератора. И какие такие "особые случаи"? Последовательности инструкций разделяются точкой с запятой, всё. Добавлено мда... такое ещё не обсуждали, в предвкушении эпического срача на 100500 страниц потому что формат "~s;" для инструкций уже не прокатывает, нельзя написать ![]() ![]() (defparameter *separator* ";") (defmethod print-object :after ((i instruction) &optional stream) (format stream *separator*)) а потом для каждого типа инструкций написать методы ![]() ![]() (defmethod print-object ((i if-instruction) &optional stream) (format stream "if ~s then ~s" (if-cond i) (if-then i)) (when (if-else i) (format stream " else ~s" (if-else i)))) (defmethod print-object ((i begin-instruction) &optional stream) (format stream "begin ~{~s~} end" (begin-instructions i))) не замарачиваясь над ';' в каждой инструкции, допускающей последовательность вложенных инструкций (типа begin, type, var, const, unit, program) Добавлено с операторами ("арифметическими", логическими) все еще хуже, можно написать ![]() ![]() begin ...; 1 + 2; ...; end; и это будет хоть и бессмысленная, но вполне законная синтаксическая конструкция. ну да это во многих языках так. и это не говоря уж о точке в конце последнего end =) Добавлено или другой пример: ![]() ![]() var ...; ...; begin ...; end; как "инструкция var определяет, где у нее конец"? у begin есть end, а у var -- нет. т.е. уже нельзя так просто представить, например program как ![]() ![]() program ::= {top-level-instruction ';'*} top-level-instruction ::= var | type | const | uses | procedure | function у program, unit, begin есть end, у остальных -- нет. |
|
Сообщ.
#1736
,
|
|
|
|
Цитата korvin @ и это будет хоть и бессмысленная, но вполне законная синтаксическая конструкция. http://docwiki.embarcadero.com/RADStudio/en/E2014_Statement_expected,_but_expression_of_type_'%25s'_found_(Delphi) Цитата korvin @ как "инструкция var определяет, где у нее конец"? Там, где начинается следующий раздел. ![]() ![]() const ... type ... var ... begin end; korvin А вообще, там ещё курить и курить: http://docwiki.embarcadero.com/RADStudio/en/Delphi_Compiler_Errors_Index |
|
Сообщ.
#1737
,
|
|
|
|
DesweR, понятно, что компилятор и программисты справляются, вопрос только зачем эти мучения?
|
|
Сообщ.
#1738
,
|
|
|
|
Цитата D_KEY @ DesweR, понятно, что компилятор и программисты справляются, вопрос только зачем эти мучения? Какие мучения? Если что, это вопрос к korvin'у |
|
Сообщ.
#1739
,
|
|
|
|
Цитата DesweR @ Цитата D_KEY @ DesweR, понятно, что компилятор и программисты справляются, вопрос только зачем эти мучения? Какие мучения? С нелогичным синтаксисом. По мне так лучше вообще без ; Но если уж есть, пусть будет в конце инструкции, чтобы не возникало лишних вопросов. |