LINUX.ORG.RU

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

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

Так тебе тайпчекер не даст тупым аксесором

В cyclone так и сделали - нельзя читать из неразмеченного объединения поля с указательным типом, так что пример выше - валиндная программа на си, но не на cyclone. С другой стороны всё ещё можно инициализировать int, прочитать поле char и получить переполнение в числах (хотя бы не сегфолт). То есть, чтобы полностью сделать их безопасными нужно вообще запретить читать. Или читать по тому полю которое инициализировали, то есть добавить тег (хм, или unoin t<номер_инициализированного_поля>, только номер_инициализированного_поля может быть неизвестен при компиляции).

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

Так тебе тайпчекер не даст тупым аксесором

В cyclone так и сделали - нельзя читать из неразмеченного объединения поля с указательным типом, так что пример выше - валиндная программа на си, но не на cyclone. С другой стороны всё ещё можно инициализировать int, прочитать поле char и получить переполнение в числах (хотя бы не сегфолт). То есть, чтобы полностью сделать их безопасными нужно вообще запретить читать. Или читать по тому полю которое инициализировали, то есть добавить тег.