从我的阅读中,我收集到你不需要在C ++中使用typedef就像在Objective-C中一样。例如,在C ++中,您可以这样做:
enum Order {first,second,third};
Order myOrder;
myOrder=first;
但在Objective-C中,第Order myOrder;
行首先需要typedef
:
typedef enum {first,second,third} Order; //noting also the placement of Order at the end
Order myOrder;
myOrder=first;
正确?如果没有Objective-C中的typedef
,您必须通过重复myOrder
来定义enum
:
enum Order {first,second,third};
enum Order myOrder;
myOrder=first;
如果事实上这一切都是正确的,我发现在语言中存在这种类型的语法差异有点奇怪,因为两者都基于C并且这些都不是语言的面向对象性质所独有的因此,应该只是CI会想到的。
答案 0 :(得分:2)
实际上这并不奇怪,Objective-C是C的超集,而在C中你必须再次使用关键字enum
(对于关键字struct
),这样才能保持连贯。
如果您希望敏捷版本切换到Objective-C ++,那么作为C ++的超集允许不那么详细的版本而不需要typedef
。
实际上Objective-C不是基于 C,它是C + Obective-C所以它是它的真正扩展。