2

この質問のアドバイスを使用して、Xcodeプロジェクトにいくつかの定数を設定しましたが、問題なく機能します。ただし、iPadかiPhoneかに応じて、これらの定数の2つに異なる値を設定したいと思います。

これが私のConstants.hファイルです:

extern integer_t const kFontSize;
extern integer_t const kFontSizeMicro;

と私の.m:

integer_t const kFontSize = 16;
integer_t const kFontSizeMicro = 11;

次に、.pchファイルの#defineマクロ設定に応じてこれらの値を変更したいと思います。しかし、これは機能しません:

if (IS_IPAD) {
    integer_t const kFontSize = 25;
    integer_t const kFontSizeMicro = 15;
}

表示されるエラーは、「if」の「予期される識別子または(」です。

この場合、条件文を許可する方法を知っている人はいますか?

4

2 に答える 2

4

C言語のifステートメントを関数本体の外部で使用して、そのようなグローバル宣言を制御することはできません。#if代わりにプリプロセッサを使用できます。

#if (IS_IPAD)
    integer_t const kFontSize = 25;
    integer_t const kFontSizeMicro = 15;
#else
    integer_t const kFontSize = 20;
    integer_t const kFontSizeMicro = 12;
#endif

#defineただし、これは-d定数を使用する場合とそれほど違いはありません。実行時、たとえば初期化中に定数を設定可能にしたい場合はconst、宣言から削除し、通常ifの関数を初期化関数(たとえば、)に入れる必要がありますapplication:didFinishLaunchingWithOptions:

于 2012-11-22T00:21:27.447 に答える
3

次のような三項演算子を使用することもできます。

integer_t const kFontSize = (IS_IPAD)? 25 : 20;
integer_t const kFontSizeMicro = (IS_IPAD)? 15 : 12;

if(IS_IPAD){kFontSize = 25} else {kFontsize=20}宣言のようなものです

計算で定数を使用する場合は、定数を()の間に入れる必要があります。そうしないと、操作の優先順位の問題のために警告が表示される場合があります。

だからそのようなもの:(kFontSize)* 2 + 1

于 2012-11-22T11:22:22.423 に答える