0

ここでAppleの秘密を明かすことはないと思うので、聞いてみます。私の.pchファイルは次のようになります。

#ifndef __IPHONE_4_0
#warning "This project uses features only available in iOS SDK 4.0 and later."
#endif

#ifdef __OBJC__
    #import <Foundation/Foundation.h>
    #import <Availability.h> 
    #import <UIKit/UIKit.h>
    #import "DejaViewAppDelegate.h"
#endif

そのため、2行目に「このプロジェクトはiOSSDK4.0以降でのみ使用可能な機能を使用しています」という警告が表示されます。

#import Availability.hがifndefステートメントの後に来ると、SDK警告はifndef警告をエコーし​​ます。idndefの前に#importAvailability.hが発生しても、警告はスローされません。

理由は何ですか?

4

1 に答える 1

6

標準プロジェクト テンプレートで<Availability.h>は、最初のインポートです。__IPHONE_4_0それが定義されている場所なので、それは理にかなっています。

上部のマクロは が定義されているかどうかをチェックし、IPHONE_4_0定義されていない場合はコンパイラの警告を発行します。マクロは後で定義されるため ( をインポート<Availability.h>すると、コンパイラの警告が表示されます。

于 2012-10-14T00:40:58.383 に答える