Naw*_*waz 13 c++ iso typedef standards-compliance user-defined-types
老熟悉的一个:
typedef int cute_int; //cute : common and familiar syntax.
Run Code Online (Sandbox Code Playgroud)
这种语法很完美.没问题.
现在,当我们可以像上面那样编写typedef时,那么允许这种语法是什么意思:
int typedef crazy_int; //crazy : uncommon and unfamiliar syntax.
Run Code Online (Sandbox Code Playgroud)
只是为了迷惑程序员?甚至在任何地方都需要这种语法(实际上我们是前一个)?你从编译器的角度怎么看?他们发现它可爱还是疯狂?或者对编译器来说无关紧要?
顺便说一下,这段代码来自: 使用typename关键字和typedef和new
如果您想知道这是否是语法错误,请在ideone处查看工作代码.
Che*_*Alf 10
"另一方面,你必须处理旧的错误和兼容性问题.例如,我认为C声明符语法是一个失败的实验.但是,我采用了C++.我考虑的替代方案和改进时间不会改善问题.我评价是一个小问题.更严重的问题是随着C的发展保持语言定义的接近程度." - Bjarne Stroustrup
ybu*_*ill 10
问题是"为什么会让你感到困惑?"
语法来自C++中的声明说明符的语法,它非常通用,并且用于C++中的许多事情.声明说明符的顺序无关紧要.看看这些:
int virtual f() const, *g(int);
int ptr1, *ptr2;
int typedef const *name1, name2;
Run Code Online (Sandbox Code Playgroud)
这相当于:
virtual int f() const;
virtual int* g(int);
int ptr1;
int *ptr2;
typedef const int* name1;
typedef const int name2;
Run Code Online (Sandbox Code Playgroud)
如果你仔细观察它们,你会发现语法实际上是统一的和合乎逻辑的.阅读C++的语法也许会有所帮助.