我使用advice in this question在我的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;
}
我得到的错误是“预期的标识符或”(“if”。
在这种情况下,任何人都知道如何允许条件语句吗?
答案 0 :(得分: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:
。
答案 1 :(得分: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