这主要是一个xcode问题。
我有一个带有小协议定义和单独的C函数声明的objective-c标头。我想将这些少数头声明合并到一个更大的文件中,该文件以前都是C代码,但xcode编译器正在抱怨。
看起来它应该是可能的,因为包含这些声明的原始文件也是.h文件。是否有编译器标志我应该翻转以将我的旧标头识别为目标C标头?
问题是,当我将旧标头包含在目标C代码中时,我会在目标C(具体为@protocol和@end部分)的部件上出错。我想绕过这个错误而不将目标C代码移出旧标题。
@protocol ConnectorDelegate
-(void)connectorDidReturnValue:(int)value;
@end
initializeConnector(id<ConnectorDelegate> delegate);
我在@protocol和@end部分获得“预期标识符或'('”。
答案 0 :(得分:1)
我可以问你为什么要在C环境中这样做(也许你正在转向Objective-C?),但我会集中精力去除你的错误,这样你才能继续前进。
虽然您可能正在使用头文件,但它仍然包含在C源文件中。 C对协议一无所知;他们是Objective-C的省份。
鉴于Objective-C是C的超集,你应该能够将包含此头文件的文件的扩展名从.c更改为.m而没有任何不良影响,它应该摆脱编译器错误
修改强>
您还可以使用#ifdef __objc__
和#endif
来构建协议声明。这样可以预先改变.c文件的扩展名。