История изменений
Исправление Stanson, (текущая версия) :
Тот чувак выше прав, это не UB, твой код тупо не скомилируется.
tcc компилирует, sdcc компилирует. gcc тоже скомпилирует если заткнуть его верещалку посредством (uintptr_t)ptr
Если у тебя что-то не компилируется, то это не значит, что не компилируется у всех.
Потому что sizeof(void*) > sizeof(int) на большинстве машин сейчас.
А switch не имеет ограничения на размер типа, главное чтобы он целым (integer) был. Адреса - это тоже, совершенно внезапно, целые (integer) числа. Да, тип int представляет целые (integer) числа. Но это совершенно не значит, что все целые (integer) числа обязаны иметь тип int.
Исправление Stanson, :
Тот чувак выше прав, это не UB, твой код тупо не скомилируется.
tcc компилирует, sdcc компилирует. gcc тоже скомпилирует если заткнуть его верещалку посредством (uintptr_t)ptr
Если у тебя что-то не компилируется, то это не значит, что не компилируется у всех.
Потому что sizeof(void*) > sizeof(int) на большинстве машин сейчас.
А switch не имеет ограничения на размер типа, главное чтобы он целым (integer) был. Адреса - это тоже, совершенно внезапно, целые (integer) числа. Да, тип int представляет целые (integer) числа. Но это совершенно не значит, что все целые (integer) числа имеют тип int.
Исправление Stanson, :
Тот чувак выше прав, это не UB, твой код тупо не скомилируется.
tcc компилирует, sdcc компилирует. gcc тоже скомпилирует если заткнуть его верещалку посредством (uintptr_t)ptr
Если у тебя что-то не компилируется, то это не значит, что не компилируется у всех.
Потому что sizeof(void*) > sizeof(int) на большинстве машин сейчас.
А switch не имеет ограничения на размер типа, главное чтобы он целым (integer) был. Адреса - это тоже, совершенно внезапно, целые (integer) числа. Тип int представляет целые (integer) числа. Это совершенно не значит, что все целые (integer) числа имеют тип int.
Исправление Stanson, :
Тот чувак выше прав, это не UB, твой код тупо не скомилируется.
tcc компилирует, sdcc компилирует. gcc тоже скомпилирует если заткнуть его верещалку посредством (uintptr_t)ptr
Если у тебя что-то не компилируется, то это не значит, что не компилируется у всех.
Потому что sizeof(void*) > sizeof(int) на большинстве машин сейчас.
А switch не имеет ограничения на размер типа, главное чтобы он целым был. Адреса - это тоже, совершенно внезапно, целые числа.
Исправление Stanson, :
Тот чувак выше прав, это не UB, твой код тупо не скомилируется.
tcc компилирует, sdcc компилирует. gcc тоже скомпилирует если заткнуть его верещалку посредством (uintptr_t)ptr
Если у тебя что-то не компилируется, то это не значит, что не компилируется у всех.
Потому что sizeof(void*) > sizeof(int) на большинстве машин сейчас.
А switch не имеет ограничения на размер типа, главное чтобы он целым был. Адреса - это тоже, внезапно, целые числа.
Исправление Stanson, :
Тот чувак выше прав, это не UB, твой код тупо не скомилируется.
tcc компилирует, sdcc компилирует. gcc тоже скомпилирует если заткнуть его верещалку посредством (uintptr_t)ptr
Если у тебя что-то не компилируется, то это не значит, что не компилируется у всех.
Потому что sizeof(void*) > sizeof(int) на большинстве машин сейчас.
А switch не имеет ограничения на размер типа, главное чтобы он целым был.
Исправление Stanson, :
Тот чувак выше прав, это не UB, твой код тупо не скомилируется.
tcc компилирует, sdcc компилирует. gcc тоже скомпилирует если заткнуть его верещалку посредством (uintptr_t)ptr
Если у тебя что-то не компилируется, то это не значит, что не компилируется у всех.
Потому что sizeof(void*) > sizeof(int) на большинстве машин сейчас.
А switch не имеет ограничения на размер типа.
Исходная версия Stanson, :
Тот чувак выше прав, это не UB, твой код тупо не скомилируется.
tcc компилирует, sdcc компилирует. gcc тоже скомпилирует если заткнуть его верещалку посредством (uintptr_t)ptr
Если у тебя что-то не компилируется, то это не значит, что не компилируется у всех.