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 ответов

29 просмотров

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 всё ещё остаётся ...

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

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

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

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта