4

そうでない場合、別のファイル (MyEnums.h など) に含める必要がある場合、.m または .h ファイルが型または値の 1 つを参照するたびに、MyEnums.h を #import する必要がありますか?


MyClass.h のサンプル コードは次のとおりです。

#import <Foundation/Foundation.h>

// #1 placeholder

@interface MyClass : NSObject {
}

// #2 placeholder

- (void)sampleMethod:(MyEnum)useOfEnum;

// #3 placeholder

@end

定義しようとしている列挙型は次のとおりです。

typedef enum MyEnum {
    Value1,
    Value2
}

列挙型定義を #1 に配置しようとすると、エラーが発生します: no type or storage class may be specified here before 'interface'

列挙型定義を #2 に配置しようとすると、エラーが発生します: expected identifier or '(' before 'end' .

列挙型定義を #3 に配置しようとすると、エラーが発生します: expected ')' before 'MyEnum'。タイプがまだ定義されていないため、パラメーター「useOfEnum」について不平を言っています。


それで、これはできますか?または、これを行い、必要な #imports の量を制限する最善の方法は何ですか?

4

2 に答える 2

5

位置#1で機能するはずですが、次のように記述する必要があると思います。

typedef enum {
    Value1,
    Value2
} MyEnum;

正しく動作するため。

更新:これを確認しました(少なくともXcode 3.2では)。上記の構文はエラーなしでコンパイルされます。

于 2009-07-30T00:46:06.947 に答える
1

; が単に欠けているようです。typedef enum 宣言の末尾をオフにします。

于 2009-07-30T03:14:13.743 に答える