天天看點

typedef和define作用域的差別

typedef:
           

如果放在所有函數之外,它的作用域就是從它定義開始直到檔案尾;

如果放在某個函數内,定義域就是從定義開始直到該函數結尾;

不管是在某個函數内,還是在所有函數之外,作用域都是從定義開始直到整個檔案結尾。

如:

typedef …//此處開始到檔案結尾
#define …//此處開始到檔案結尾
int negate(int num)
{
           
typedef …//此處開始到該函數結束。注意,該函數内,此定義前,也不能用
   #define …//此處開始到檔案結尾

}
           
typedef …//此處開始到檔案結尾
#define …//此處開始到檔案結尾
void show()
{
       typedef …//此處開始到該函數結束。
#define …//此處開始到檔案結尾
}
           

總結:

(1) 不管是typedef還是define,都不能在定義之前使用;

(2) typedef受函數範圍影響,而define不受;

(3) 不管是typedef還是define,其作用域都不會擴充到别的檔案,即使是同一個程式的不同檔案,也不能互相使用。

繼續閱讀