麻烦包括旧c头中的客观c代码

时间:2013-01-07 20:59:15

标签: objective-c xcode header compilation

这主要是一个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部分获得“预期标识符或'('”。

1 个答案:

答案 0 :(得分:1)

我可以问你为什么要在C环境中这样做(也许你正在转向Objective-C?),但我会集中精力去除你的错误,这样你才能继续前进。

虽然您可能正在使用头文件,但它仍然包含在C源文件中。 C对协议一无所知;他们是Objective-C的省份。

鉴于Objective-C是C的超集,你应该能够将包含此头文件的文件的扩展名从.c更改为.m而没有任何不良影响,它应该摆脱编译器错误

修改

您还可以使用#ifdef __objc__#endif来构建协议声明。这样可以预先改变.c文件的扩展名。