История изменений
Исправление 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 так или иначе это всё используют, просто потому что удобно.