Можно делать определенные типы универсальных типов -функции как макросы в C , например, такие как:
#define SQRT(x) (sizeof(x) == sizeof(float) ? sqrtf((x)) : \
sizeof(x) == sizeof(double) ? sqrt((x)) : \
sqrtl((x)) )
Это работает (в основном), как и ожидалось, пока x
является типом с плавающей запятой.
Но что, если Мне нужен макрос общего типа, который может принимать либо целочисленный тип, либо тип указателя, который может иметь одинаковый размер. Есть ли умный способ проверить, является ли аргумент макроса целым числом или указателем? А как насчет целого числа по сравнению с типом с плавающей запятой?