170 похожих чатов

Fl_Double_Window* make_window() { Fl_Double_Window* w; { Fl_Double_Window* o

= new Fl_Double_Window(480, 320);
w = o; (void)w;
{ Fl_Button* o = new Fl_Button(25, 25, 424, 22, "Fl_Button");
o->callback((Fl_Callback*)click);
} // Fl_Button* o
o->end();
} // Fl_Double_Window* o
return w;
}

Здесь переменная , объявляется и появляется код в фигурных скобках. Как это вообще? Где об этом прочитать? Как такое называется?

21 ответов

9 просмотров

https://en.cppreference.com/w/cpp/language/scope

Андрей- Автор вопроса
Sergey D
https://en.cppreference.com/w/cpp/language/scope

Разобрался. Но зачем вообще создавать отдельную переменную o ? Это какой-то паттерн? Есть где об этом почитать?

Это автоматическая переменная, существует только внутри блока кода. Переменная с одним и тем же названием и типом данных, но в разных блоках кода никак не связаны между собой.

Андрей- Автор вопроса
Дмитрий 🎮
Это автоматическая переменная, существует только в...

Я понял, но зачем? Почему не использовать w на прямую?

Андрей
Разобрался. Но зачем вообще создавать отдельную пе...

Это хорошая практика объявлять переменную как можно ближе к месту использования и по максимуму ограничивать её область видимости. Насчёт w и o не знаю, не особо понимаю из-за форматирования что там и зачем.

Андрей- Автор вопроса
Алексей (lewa_j) Иванчуков
это странный код не надо так

Это автоматическая генерация для пользовательского интерфейса FLTK

Андрей- Автор вопроса
Дмитрий 🎮
Это хорошая практика объявлять переменную как можн...

Так я так понимаю, мнение на счёт такое реализации разнятся?

Андрей
Так я так понимаю, мнение на счёт такое реализации...

Ты о коде или распространённой практике?

Андрей- Автор вопроса
Андрей
О том, имеет ли это смысл

Мнения и ситуации могут быть разными, а объективные плюсы и минусы всегда одни. По крайней мере не засорять область видимости лишними переменными и ограничивать временные переменные местом их использования это однозначный плюс так делать.

Андрей- Автор вопроса
Дмитрий 🎮
Мнения и ситуации могут быть разными, а объективны...

Да, согласен. Но за очисткой всё равно придётся следить. Ведь как только он покинет область видимости, это по идее, утечк памяти

Андрей
Да, согласен. Но за очисткой всё равно придётся сл...

Не правда, только для динамической памяти. Переменные на "стеке" — автоматические по этому так и называются, что тебе не надо вручную выделять и освобождать память под них. Эту работу берёт на себя компилятор.

Андрей- Автор вопроса
Дмитрий 🎮
Мнения и ситуации могут быть разными, а объективны...

В данный момент кнопка Fl_Button всё ещё остаётся в куче, потому я так понимаю она и остаётся на окне w даже после покидания области память, но ведь очистить теперь её никак нельзя, разве нет?

Андрей
В данный момент кнопка Fl_Button всё ещё остаётся ...

Не знаю, надо читать документацию к библиотеке.

Андрей- Автор вопроса
Дмитрий 🎮
Не правда, только для динамической памяти. Переме...

В данном случаи, это именно динамическое выделение памяти

Андрей
В данном случаи, это именно динамическое выделение...

Да, но вдруг там есть передача владения или что-то такое. Или разработчики библиотеки решили в конструкторе все динамические объекты добавлять в вектор, чтобы в конце работы за тебя освободить динамическую память?

Андрей- Автор вопроса
Андрей
Ладно, спасибо за помочь

Утром, может быть, люди поопытнее ещё что-нибудь скажут или меня поправят.

Андрей
В данный момент кнопка Fl_Button всё ещё остаётся ...

По данному коду нельзя, но возможно сама Эта библиотека имеет какие-то возможности отслеживания этой динамической памяти и корректного удаления этих объектов

Похожие вопросы

Обсуждают сегодня

@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Заметил в ghci 9.4.8: > :t (<*>) @((->)_) (<*>) @((->)_) :: (w -> (a -> b)) -> (w -> a) -> w -> b Разве не должно (w -> (a -> b)) быть записано как (w -> a -> b)? Это баг, ил...
Михаил
13
Подобного рода ;Следующие три строки это директивы ассемблера, ;которые можно не задавать, т.к.работаем в Visual Studio. ;Символ ";" - это начало однострочного комментария ...
Егор Анелькин
3
Any electron dev here?
Sayanth Tezro
12
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
так это может кто что знает или использует что-то как макбук только не макбук? на 13…14 дюймов
Michael
9
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
Кто-нибудь знает почему SPM клонирует репо целиком? Некоторые репы просто огромные, как та же swift-syntax которая нужна для использования макросов. Сначала подумал, что это...
iMike
6
Карта сайта