Apple Developer Connection
Advanced Search
Member Login Log In | Not a Member? Contact ADC

< Previous PageNext Page >

個々のSDKのための条件付きコンパイル

異なるSDKを使って同じソースコードをビルドする場合は、使用されているSDKに応じてコードを条件付きでコンパイルする必要が生じることもあります。これを行うには、プリプロセッサディレクティブとAvailabilityMacros.hで定義されているマクロを使います。

Important: AvailabilityMacros.hは、10.2以降のSDKのCarbonフレームワークとCocoaフレームワークによって自動的にインクルードされますが、10.1 SDKではインクルードされません。これらのマクロを10.1 SDKと併せて使用したい場合は、通常、プロジェクトのプレフィックスヘッダに次の行を追加することによって、手動でファイルをインクルードする必要があります。

#include <AvailabilityMacros.h>

この行を追加しないと、他のSDKでは正常にビルドされるコードが、10.1 SDKでビルドすると無症状のまま失敗します。

たとえば、Listing 2-1に示した関数を、10.2.8 SDKを対象に(または、他のデベロッパによって、10.2を使用し、SDKを使用せずに)コンパイルする必要があるものとします。HIAboutBox関数を参照するだけでもコンパイルが失敗するため、10.3のヘッダファイルを使用するのでない限り、コード全体を除外する必要があります。次のようなコードでこれを行うことができます。

void MyAboutBox(void)
{
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3)
    if(HIAboutBox != NULL)
    {
        HIAboutBox(NULL);
    }
    else
    {
#endif
        // 以前のテクノロジーでバージョン情報ボックスを表示するための大量のコード
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3)
    }
#endif
}

この方法を使えば、ソースファイルをネイティブの10.1または10.2システム上で(または10.1または10.2のSDKを使って)コンパイルエラーなしでビルドできます。



< Previous PageNext Page >


Last updated: 2005-11-09




Did this document help you?
Yes: Tell us what works for you.

It’s good, but: Report typos, inaccuracies, and so forth.

It wasn’t helpful: Tell us what would have helped.
Get information on Apple products.
Visit the Apple Store online or at retail locations.
1-800-MY-APPLE

Copyright © 2007 Apple Inc.
All rights reserved. | Terms of use | Privacy Notice