0

これは主に xcode に関する質問です。小さなプロトコル定義と別の C 関数宣言を含む目的の 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__#endif;を使用してプロトコル宣言を構成することもできます。これにより、.c ファイルの拡張子を変更する必要がなくなります。

于 2013-01-07T21:24:40.120 に答える