2

我已经使用这个问题中的建议在我的 Xcode 项目中设置了一些常量,它工作得很好。但是,现在我想根据它是 iPad 还是 iPhone,为其中两个常量设置不同的值。

这是我的 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;
}

我得到的错误是“如果”上的“预期标识符或(”。

有人知道在这种情况下如何允许条件语句吗?

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 回答