天天看點

PHp中typedef用法詳解

typedef用法    typedef 聲明,簡稱 typedef,為現有類型建立一個新的名字。比如人們常常使用 typedef 來編寫更美觀和可讀的代碼。所謂美觀,意指 typedef 能隐藏笨拙的文法構造以及平台相關的資料類型,進而增強可移植性和以及未來的可維護性。     typedef 使用最多的地方是建立易于記憶的類型名,用它來歸檔程式員的意圖。類型出現在所聲明的變量名字中,位于 '' typedef '' 關鍵字右邊。例如: typedef int size; 此聲明定義了一個 int 的同義字,名字為 size。注意 typedef 并不建立新的類型。它僅僅為現有類型添加一個同義字。你可以在任何需要 int 的上下文中使用 size.     typedef 還可以掩飾符合類型,如指針和數組。例如,你不用象下面這樣重複定義有 81 個字元元素的數組: char line [ 81] ; char text[ 81] ;      定義一個 typedef,每當要用到相同類型和大小的數組時,可以這樣: typedef char Line [ 81] ; Line text, secondline;     typedef 有另外一個重要的用途,那就是定義機器無關的類型,例如,你可以定義一個叫 REAL 的浮點類型,在目标機器上它可以i獲得最高的精度: typedef long double REAL ;      在不支援 long double 的機器上,該 typedef 看起來會是下面這樣: typedef double REAL ;      并且,在連 double 都不支援的機器上,該 typedef 看起來會是這樣: typedef float REAL ; 你不用對源代碼做任何修改,便可以在每一種平台上編譯這個使用 REAL 類型的應用程式。唯一要改的是 typedef 本身。在大多數情況下,甚至這個微小的變動完全都可以通過奇妙的條件編譯來自動實作。不是嗎? 标準庫廣泛地使用 typedef 來建立這樣的平台無關類型:size_t, ptrdiff 和 fpos_t 就是其中的例子。此外,象 std : : string 和 std : : ofstream 這樣的 typedef 還隐藏了長長的,難以了解的模闆特化文法,例如:basic_string< char , char_traits < char > , allocator < char > > 和 basic_ofstream < char , char_traits < char > > 。 注1: 注意typedef與define的差別 typdef kkk int * kkk a, b      則a, b類型相同 define kkk int * kkk a, b      則a, b類型不同 注2: typedef int ( * mac_listen_func) ( int * , char * ) ; mac_listen_func mlf1, mlf2; 等價定義: int ( * mlf1) ( int * , char * ) ; int ( * mlf1) ( int * , char * ) ;      上面的方式使用比較友善,可讀性也比較好。