История изменений
Исправление
MOPKOBKA,
(текущая версия)
:
Рассовывать структуры по регистрам положено по Linux ABI, так и С делает. Но это применяется когда принимающая функция знает размер структуры, и он меньше определенного. Но в случае с виртуальным объектом функция никогда не знает что ей прилетит, какого размера объект, вот и передается вместо этого указатель.
В Rust принимающая функция всегда знает что ей передается пара.
Но это получается что у Rust нету dynamic_cast, RTTI. Можно сказать что C++ более рантаймовый язычек (конкретно в этом плане), и виртуальные вызовы немного эффективнее в Rust не нужно еще лишнее поле в классах, RTTI все равно все отключают, царь если что опровергнет.
Исправление
MOPKOBKA,
:
Рассовывать структуры по регистрам положено по Linux ABI, так и С делает. Но это применяется когда принимающая функция знает размер структуры, и он меньше определенного. Но в случае с виртуальным объектом функция никогда не знает что ей прилетит, какого размера объект, вот и передается вместо этого указатель.
В Rust принимающая функция всегда знает что ей передается пара.
Но это получается что у Rust нету dynamic_cast, RTTI. Можно сказать что C++ более рантаймовый язычек (конкретно в этом плане), и виртуальные вызовы немного эффективнее в Rust, RTTI все равно все отключают, царь если что опровергнет.
Исправление
MOPKOBKA,
:
Рассовывать структуры по регистрам положено по Linux ABI, так и С делает. Но это применяется когда принимающая функция знает размер структуры, и он меньше определенного. Но в случае с виртуальным объектом функция никогда не знает что ей прилетит, какого размера объект, вот и передается вместо этого указатель.
В Rust принимающая функция всегда знает что ей передается пара.
Но это получается что у Rust нету dynamic_cast, RTTI. Можно сказать что C++ более рантаймовый язычек (конкретно в этом плане), царь если что опровергнет.
Исправление
MOPKOBKA,
:
Рассовывать структуры по регистрам положено по Linux ABI, так и С делает. Но это применяется когда принимающая функция знает размер структуры, и он меньше определенного. Но в случае с виртуальным объектом функция никогда не знает что ей прилетит, какого размера объект, вот и передается вместо этого указатель.
В Rust принимающая функция всегда знает что ей передается пара.
Но это получается что у Rust нету dynamic_cast, RTTI. Можно сказать что C++ более рантаймовый язычек, царь если что опровергнет.
Исправление
MOPKOBKA,
:
Рассовывать структуры по регистрам положено по Linux ABI, так и С делает. Но это применяется когда принимающая функция знает размер структуры, и он меньше определенного. Но в случае с виртуальным объектом функция никогда не знает что ей прилетит, какого размера объект, вот и передается вместо этого указатель.
В Rust принимающая функция всегда знает что ей передается пара.
Но это получается что у Rust нету dynamic_cast, RTTI.
Исправление
MOPKOBKA,
:
Рассовывать структуры по регистрам положено по Linux ABI, так и С делает. Но это применяется когда принимающая функция знает размер структуры, и он меньше определенного. Но в случае с виртуальным объектом функция никогда не знает что ей прилетит, какого размера объект, вот и передается вместо этого указатель.
В Rust принимающая функция всегда знает что ей передается пара.
Но это получается что у Rust нету dynamic_cast.
Исходная версия
MOPKOBKA,
:
Рассовывать структуры по регистрам положено по Linux ABI, так и С делает. Но это применяется когда принимающая функция знает размер структуры, и он меньше определенного. Но в случае с виртуальным объектом функция никогда не знает что ей прилетит, какого размера объект, вот и передается вместо этого указатель.
В Rust принимающая функция всегда знает что ей передается пара.