Автор Тема: локальные переменные в отдельной декларативной части  (Прочитано 43250 раз)

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Причем спор такой, что типа нужно решить кто из них кошерней, а другой выпилить нафиг раз и навсегда.

Ну конкретно в случае секции VAR она просто становится не нужна - всегда можно просто объявить все переменные в начале блока.

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Гы. На каком языке ты писал и вляпался (неоднократно, раз это бытовуха) вот в такое?
GNU C, чужое наследие. Зачем многократно, для бытовухи достаточно и 1-го скандала.

И где там в GNU С автовывод типов и перегруженные функции?

Вы ведь знаете, что получив граблями по лбу, ходить начинаешь осторожней?

Конечно. Например, функция, которая возвращала int, переписывается не просто на возврат double, а на возврат safe_double_t. И этот safe_double_t ругается на попытку сравнения на равенство с другим safe_double_t (ну и с int, до кучи).

А ваши слова, уж извините, снова вызывают у меня ассоциации.

Политические пассажи не буду комментировать в принципе.

Али кто обещал невиданных программистских высот, достигнутых токмо благодаря силушке Оберона и недостижимых на других языках, а теперь коварно не показывает?

Вообще да, info21 обещал и обещает. А вот код тоже не показывает (облажавшись пару раз).

Но самоирония Вам идёт. Разработка не секретная, а домашняя. Пишу, что скорее всего не увидит свет, потому что адекватно оцениваю силы, учитывая также широту взглядов на проведение времени вне работы (кресло, диван, кровать).

Дык, у меня тоже домашне-диванная... Однако на гитхаб оно и с дивана замечательно заливается.

kkkk

  • Full Member
  • ***
  • Сообщений: 135
    • Просмотр профиля
И где там в GNU С автовывод типов и перегруженные функции?
Нигде, разумеется. Есть скромный typeof, оказывается, иногда и этого достаточно.

Политические пассажи не буду комментировать в принципе.
Во-первых, это уже комментарий, логичней тогда было пропустить эту часть. Во-вторых, несмотря на то что, слова "демократия" и "либерализм" у многих ассоциируются только с политикой, это не отменяет их более широкой трактовки, они вполне могут быть применены и, например, к организации разработки ПО и к общению на форуме. И в-третьих, речь-то в первую очередь о специфической жизненной позиции, когда возможность существования адекватного, но не похожего мнения отстаивается ровно до тех, пока оно применено к себе, а как только её нужно распространить на других, то тут же применяется то же самое поведение, которое немногим ранее усердно изобличалось.

Вообще да, info21 обещал и обещает. А вот код тоже не показывает (облажавшись пару раз).
Это, конечно, интересно. Скажите пожалуйста, какое отношение это имеет ко мне?

Дык, у меня тоже домашне-диванная... Однако на гитхаб оно и с дивана замечательно заливается.
Это хорошо и это ваше право. Скажите пожалуйста, какое отношение это имеет ко мне?

kkkk

  • Full Member
  • ***
  • Сообщений: 135
    • Просмотр профиля
И где там в GNU С автовывод типов и перегруженные функции?
Нигде, разумеется. Есть скромный typeof, оказывается, иногда и этого достаточно.
Выяснилось, что автовывод таки присутствует
__auto_type a = expression;

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
И где там в GNU С автовывод типов и перегруженные функции?
Нигде, разумеется. Есть скромный typeof, оказывается, иногда и этого достаточно.

Может typedef? В общем это все в одну кассу - большие возможности подразумевают большую ответственность. Ну и каждый выбирает для себя сам порог, за которым он уже не видит всех последствий использования какой-то возможности. Конкретно сишный typedef - замечательная штука, даже в паскалях/обероне была и есть в каком-то виде (в последнем обероне почти выпилили).

Это, конечно, интересно. Скажите пожалуйста, какое отношение это имеет ко мне?

В общем случае никакого (если ты не info21 :) Я только отметил определенную корреляцию между языковыми предпочтениями и доступностью разработок. Это мое личное наблюдение, основанное на личном восприятии (без цифр статистики).

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Выяснилось, что автовывод таки присутствует
__auto_type a = expression;

Расширение конкретного вендора? Это уже вообще несколько иная область со своей спецификой (сознательный выбор маневрировать между известными и не очень граблями).

kkkk

  • Full Member
  • ***
  • Сообщений: 135
    • Просмотр профиля
Может typedef?
typeof по аналогии с sizeof.

В общем случае никакого (если ты не info21 :) Я только отметил определенную корреляцию между языковыми предпочтениями и доступностью разработок. Это мое личное наблюдение, основанное на личном восприятии (без цифр статистики).
Ну, кто знает. По поводу языковых предпочтений - Вы не заметили это сообщение:
Рукотворный тип, который суть переменная со спецификатором хранения typedef, может быть переопределен во вложенной области видимости, причем самым забавным способом - type a, b, type; с int такое не пройдет. Переменная рукотворного типа не может быть объявлена с signed, unsigned, long, short. Опять же, рукотворный тип может быть объявлен уже с квалификатором const/volatile, что может привести к невозможности объявления переменной с теми же явными квалификаторами.
То, что typedef - это спецификатор хранения, и соответственно синтаксически эквивалентен static, extern, register, auto со всеми вытекающими последствиями, это,  насколько я могу судить, достаточно неожиданный нюанс и для многих разработчиков на Си, а не то что... Заодно видно, что перепутать typedef и typeof мне было бы затруднительно.

__auto_type a = expression;Расширение конкретного вендора? Это уже вообще несколько иная область со своей спецификой (сознательный выбор маневрировать между известными и не очень граблями).
Я же указал на расширение конкретного поставщика - GNU C. Да, это не ANSI C и не ISO С99. Но поддерживается не только в gcc:  частично в clang, и ещё более частично в tcc. Кстати, конкретно __auto_type - это похоже, совсем свежая новинка.
« Последнее редактирование: Декабрь 18, 2013, 05:53:14 pm от kkkk »