@protocol foo; @protocol foo2 @end @class itf; // Expressions typedef typeof(@"foo" "bar") objc_string; typedef typeof(@encode(int)) objc_encode; typedef typeof(@protocol(foo2)) objc_protocol; typedef typeof(@selector(noArgs)) objc_selector_noArgs; typedef typeof(@selector(oneArg:)) objc_selector_oneArg; typedef typeof(@selector(foo:bar:)) objc_selector_twoArg; // Types. typedef typeof(id) objc_id_protocol_ty; typedef typeof(itf*) objc_interface_ty; typedef typeof(itf*) objc_qual_interface_ty; @interface PP @property (assign) id prop; @end static inline id getPseudoObject(PP *p) { return p.prop; }