这是可以做到的某些类型的类型泛型函数作为宏在Ç,例如之类的东西:使用宏进行类型泛型编程:使用技巧来确定类型?
#define SQRT(x) (sizeof(x) == sizeof(float) ? sqrtf((x)) : \
sizeof(x) == sizeof(double) ? sqrt((x)) : \
sqrtl((x)))
此作品(大部分)作为只要x
是浮点型的预期。
但是,如果我想要一个类型通用宏,可以采取一个整数类型或指针类型,它可能具有相同的大小。有一种聪明的方法来测试宏参数是一个整数还是一个指针?整数与浮点类型有什么关系?
宏并不是天生就知道的,但有时候会有技巧。例如,`((0 *(x)-1)<0)`可以确定是否签署了x(假设x的转换等级为int或更高)。 – 2010-12-02 04:06:57