天天看點

typedef陷阱

typedef是定義了一種類型的新别名,不同于宏,它不是簡單的字元串替換。比如:

先定義:

typedef char* PSTR;

然後:

int mystrcmp(const PSTR, const PSTR);

const PSTR實際上相當于const char*嗎?不是的,它實際上相當于char* const。

原因在于const給予了整個指針本身以常量性,也就是形成了常量指針char* const。

簡單來說,記住當const和typedef一起出現時,typedef不會是簡單的字元串替換就行。