簡體   English   中英

C ++ typedef語法規則

[英]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”。

謝謝你的幫助。

這是因為pstrchar*的別名,當你做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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM