當前位置:編程學習大全網 - 源碼下載 - typedef和define具體的詳細區別

typedef和define具體的詳細區別

#define是編譯預處理指令,在編譯預處理時換,不作正確性檢查,不論是否正確只進行帶入替換,只有在編譯已被展開的源程序時才會發現可能的錯誤並報錯。

2.typedef為C語言的關鍵字,作用是為壹種數據類型定義壹個新名字。

兩者的區別如例:

#define A int * tepedef int * A;(這是壹條語句,要加分號)

兩者的作用都是將A代表int *,但是#define在預處理時進行簡單的替換,而typedef不是簡單替換。

typedef定義的A相當於定義了壹個指針指向了int *。而#define定義的A只是進行了替換。

擴展資料:

typedef 有另外壹個重要的用途,那就是定義機器無關的類型,例如,妳可以定義壹個叫 REAL 的浮點類型,在目標機器上它可以獲得最高的精度:

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,allocator> 和 basic_ofstream>。

參考資料:

typedef-百度百科

  • 上一篇:如何在android中實現帶指示器的viewpager
  • 下一篇:如何讓Aauto更快的評論贊很多?
  • copyright 2024編程學習大全網