История изменений
Исправление hateyoufeel, (текущая версия) :
gcc тоже скомпилирует если заткнуть его верещалку посредством (uintptr_t)ptr
Ну так какую угодно верещалку кому угодно можно заткнуть. Что не спасает от ошибок. Ну и это другой код уже получается.
А switch не имеет ограничения на размер типа. Адреса - это тоже, совершенно внезапно, целые (integer) числа.
Нет. Указатели – это не целые и вообще не числа. Сюрприз!
Исходная версия hateyoufeel, :
gcc тоже скомпилирует если заткнуть его верещалку посредством (uintptr_t)ptr
Ну так какую угодно верещалку кому угодно можно заткнуть. Что не спасает от ошибок. Ну и это другой код уже получается.
А switch не имеет ограничения на размер типа.
Безусловно! Проблема в том, что выражение внутри оператора switch() должно быть целочисленным типом. Указатели им не являются.