這是可以做到的某些類型的類型泛型函數作爲宏在Ç,例如之類的東西:使用宏進行類型泛型編程:使用技巧來確定類型?
#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