C ++ typedef语法规则

时间:2012-05-22 16:03:24

标签: c++

对于我的生活,我无法找到用于将typedef转换为C ++语句的规则的详细解释。我理解的简单案例。但请考虑Danny Kalev

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”。

感谢您的帮助。

2 个答案:

答案 0 :(得分:5)

这是因为pstrchar*的别名,当你const pstr时,有点像const (char*)而不是(const char)*

答案 1 :(得分:3)

typedef不像宏;它不只是执行简单的文本替换。 typedef定义了一个单元,附加const适用于整个事物。定义的单位是一个指针,因此将const应用于它会给你一个const指针。

您期望的结果需要const“到达内部”pstr类型才能应用于内部内容。在该类型内声明更多指针级别会变得更糟。考虑typedef char*** pppstr。要使其成为char const***const必须在pppstr类型中插入三层深。无论类型定义到底有多复杂,规则最好始终将const应用于外层。