В народном фольклоре говорится, что:
Система типов существует не просто так. Целые числа и указатели относятся к разным типам, преобразование между ними в большинстве случаев является злоупотреблением, может указывать на ошибку проектирования, и его следует избегать.
Даже когда такое преобразование выполняется, нельзя делать никаких предположений о размере целых чисел. и указатели (приведение void *
к int
- самый простой способ заставить код выйти из строя на x64), а вместо int
следует использовать intptr_t
или uintptr_t
из stdint.h
.
Зная это, когда на самом деле полезно выполнять такое приведение?
(Примечание: наличие немного более короткого кода по цене переносимости не считается «действительно полезным».)
Один известный мне случай:
Что-нибудь еще?