0

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

4

1 回答 1

1

我可以问你为什么要在 C 环境中执行此操作(也许你正在转向 Objective-C?),但我将专注于消除你的错误,以便你可以继续前进。

虽然您可能在头文件中工作,但它仍然包含在 C 源文件中。C 对协议一无所知;他们是Objective-C的领域。

鉴于 Objective-C 是 C 的超集,您应该能够将包含此标头的文件的扩展名从 .c 更改为 .m 而不会产生不良影响,并且应该消除编译器错误。

编辑

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

于 2013-01-07T21:24:40.120 回答