我最近发现了Dark corners of C/C++: The typedef keyword doesn’t need to be the first word on the line,并且惊讶地发现以下所有外观怪异 typedef
在C和C ++中都有效:
int typedef a;
short unsigned typedef b;
以上typedef
等同于:
typedef int a;
typedef short unsigned b;
而且,以下内容在C ++中无效,但在C中有效:
typedef enum { c };
typedef;
typedef int;
typedef int short;
语言设计者为何在C和C ++中留下这个黑暗的角落,原因何在?
答案 0 :(得分:0)
我认为,最主要的是保持与旧程序和库的兼容性。有很多。
答案 1 :(得分:-2)
也许与cv
修饰符使用相同的规则=适用修饰符:
像cv
修饰符(别名const
volatile
和mutable
)一样,我猜typedef
遵循相同的规则。
const适用于它剩下的东西。如果左侧没有任何内容,则适用于右侧的内容。