【发布时间】:2012-05-23 00:11:04
【问题描述】:
在我的一生中,我无法很好地解释将 typedef 转换为 C++ 语句的规则。我理解的简单案例。但请从Danny Kalev 考虑这一点:
typedef char * pstr;
int mystrcmp(const pstr, const pstr); //wrong!
丹尼·卡列夫接着写道:
序列 const pstr 实际上表示 char * const(一个指向 char 的 const 指针); 不是 const char *(指向 const char 的指针。
我在任何地方都找不到解释为什么“const pstr”会被转换为“char * const”的规则。
感谢您的帮助。
【问题讨论】:
-
这似乎合乎逻辑,不是吗?您将
pstr类型定义为指向 char 的指针。所以const pstr是一个指向 char 的 const 指针,char * const。 -
简单的经验法则。
typedef!=#define。如果你想要你所描述的,你必须使用宏。 -
如果您始终使用 post-const 形式,它会更有意义。
pstr const==char * const。 pre-const 形式是一个例外,因此它会使事情变得混乱。
标签: c++