Initialiser元素不是编译时间常数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Initialiser元素不是编译时间常数相关的知识,希望对你有一定的参考价值。

在我的常量文件中,我包括以下行

NSString * ALERT_OK = NSLocalizedString(@"Ok",@"Ok");

此后,当我尝试编译时,我收到以下错误

Initialiser element is not a compile time constant

我该如何调试?

答案

问题在于,NSLocalizedString是根据语言返回不同值的函数。在系统运行之前,它不是一个常数。

相反,使用:

 #define ALERT_OK NSLocalizedString(@"Ok",@"Ok");

并且现在它将简单地将ALERT_OK替换为该函数,就可以了。 (请注意,您应该对所有此类全局值使用某种前缀,以免意外创建其他地方使用相同名称的东西。)

以上是关于Initialiser元素不是编译时间常数的主要内容,如果未能解决你的问题,请参考以下文章

消除keil编译警告 #1296-D:extended constant initialiser used

inline内联函数

说说编译器是否会对已知结果的运算式做出优化?(老物)

如何有条件地将 C 代码片段编译到我的 Perl 模块?

视图之间的共享元素转换(不是活动或片段)

是否可以动态编译和执行 C# 代码片段?