[英]C++ typedef syntax rules
對於我的生活,我無法找到用於將typedef轉換為C ++語句的規則的良好解釋。 我理解的簡單案例。 但請考慮丹尼卡勒夫的這個:
typedef char * pstr;
int mystrcmp(const pstr, const pstr); //wrong!
Danny Kalev然后寫道:
序列const pstr實際上意味着char * const(一個指向char的const指針); 不是const char *(指向const char的指針。
我找不到任何規則來解釋為什么“const pstr”會被轉換為“char * const”。
謝謝你的幫助。
這是因為pstr
是char*
的別名,當你做const pstr
有點像說const (char*)
而不是(const char)*
。
typedef不像宏; 它不只是執行簡單的文本替換。 typedef定義了一個單元,附加的const
適用於整個事物。 定義的單位是一個指針,因此對它應用const
會給你一個const指針。
您期望的結果將要求const
“到達內部” pstr
類型以應用於內部事物。 在該類型內聲明更多指針級別會變得更糟。 考慮一下typedef char*** pppstr
。 為了使它成為一個char const***
, const
必須在pppstr
類型中插入三層深度 。 無論類型定義到底有多復雜,規則最好始終將const
應用於外層。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.