LINUX.ORG.RU

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

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

gcc тоже скомпилирует если заткнуть его верещалку посредством (uintptr_t)ptr

Ну так какую угодно верещалку кому угодно можно заткнуть. Что не спасает от ошибок. Ну и это другой код уже получается.

А switch не имеет ограничения на размер типа. Адреса - это тоже, совершенно внезапно, целые (integer) числа.

Нет. Указатели – это не целые и вообще не числа. Сюрприз!

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

gcc тоже скомпилирует если заткнуть его верещалку посредством (uintptr_t)ptr

Ну так какую угодно верещалку кому угодно можно заткнуть. Что не спасает от ошибок. Ну и это другой код уже получается.

А switch не имеет ограничения на размер типа.

Безусловно! Проблема в том, что выражение внутри оператора switch() должно быть целочисленным типом. Указатели им не являются.