在C代碼中使用typedef
代替#define
有什麼好處(如果有的話)?爲什麼使用C typedefs而不是#defines?
作爲一例,是否有任何優勢,使用
typedef unsigned char UBYTE
在
#define UBYTE unsigned char
當兩個可以用作
void func()
{
UBYTE byte_value = 0;
/* Do some stuff */
return byte_value;
}
顯然預處理器將嘗試無論看到哪一個,都會展開一個#define
,這不會發生在typedef
,但這在我看來並沒有什麼特別的優勢或劣勢;我無法想象如果出現問題,任何一種使用都不會導致構建錯誤。
對預處理器的說法:「虐待我,虐待我..讓我覺得我想要!!」 +1 – 2010-04-07 11:01:58
我確實會對預處理器的濫用做一些處理,但除非沒有其他辦法,否則不適用於類型。 (在過去的20年中,我需要它*編寫代碼來完成跨平臺的64位整數處理。這對當時的編譯器來說是非常棘手的問題,並且結束了比我更多的#ifdefs ) – 2010-04-07 13:33:47
函數指針類型... – hugomg 2011-02-09 23:16:31