LINUX.ORG.RU

История изменений

Исправление hateyoufeel, (текущая версия) :

Т.е. если сравнивать с C++, то код вида void f() { my_object myobj; } может включать в себя два вызова функций (конструктор и деструктор), которых в явном виде нет в коде.

Но они есть. Ты читаешь этот код как будто он на Си, но это ведь не Си. Просто привыкни, что в C++ создание любого объекта приводит к вызову пачки функций.

А в Rust, кстати, не приводит. Rust очевиднее C++?

В этом смысле в C действительно надо постараться, чтобы найти такие конструкции.

В стандартном Си, да. Но тут вступает в силу тот факт, что все обмазываются расширениями в той или иной мере. В реальном коде бывает дохрена __attribute__ типа constructor, cleanup (по сути, defer) и так далее. Хочешь unique_ptr на Сишечке с расширениями? Их у нас есть.

Практически все проекты сложнее Hello World так или иначе это всё используют, просто потому что удобно.

Исходная версия hateyoufeel, :

В этом смысле в C действительно надо постараться, чтобы найти такие конструкции.

В стандартном Си, да. Но тут вступает в силу тот факт, что все обмазываются расширениями в той или иной мере. В реальном коде бывает дохрена __attribute__ типа constructor, cleanup (по сути, defer) и так далее. Хочешь unique_ptr на Сишечке с расширениями? Их у нас есть.

Практически все проекты сложнее Hello World так или иначе это всё используют, просто потому что удобно.