如何更改#define值

时间:2015-02-07 02:18:28

标签: ios objective-c c-preprocessor

我知道#define必须保持不变,但请给我任何好的提示。

在我的情况下,我按#define定义一个常量值(例如#define kImageQuality 0.7)。 但是,我想在打开应用程序之前更改Settings.Bundle的常量值。 那意味着改变常数值,不是吗? 这是以任何方式实现我的目标吗?

它应该更改为实例变量而不是#define? 你给出的任何提示都会非常感激。

2 个答案:

答案 0 :(得分:5)

在编译之前,

#define常量被替换,甚至由预处理器开始(例如kImageQuality在编译之前被0.7替换)。因此,在应用程序启动之前加载它是不可能的,因为应用程序不会每次都重新编译。您需要使用变量:

float imageQuality = 0.7f;

答案 1 :(得分:3)

这是不可能的,因为:

#define constant 3
...
y = x + constant

完全等同于:

y = x + 3
在代码编译之前,

#define d常量在预处理阶段被它们的值替换。要动态更改值,您必须使用全局变量或其他一些持久机制,如NSUserDefaults