为什么编译器在提供的代码上给出以下错误消息:"初始化元素不是常量".相应的C/C++代码在gcc下完美编译.
#importconst float a = 1; const float b = a + a; // <- error here int main (int argc, const char * argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; // insert code here... NSLog(@"Hello, World!"); [pool drain]; return 0; }
dreamlax.. 12
如果const float
语句出现在文件范围之外的其他位置,那么该代码将只能正确编译.
显然,它是标准的一部分.重要的是,所有文件范围声明的变量都使用常量表达式初始化,而不是涉及常量变量的表达式.
您正在使用另一个对象的值初始化浮动'b'.任何对象的值,即使它是const限定的,也不是C中的常量表达式.
如果const float
语句出现在文件范围之外的其他位置,那么该代码将只能正确编译.
显然,它是标准的一部分.重要的是,所有文件范围声明的变量都使用常量表达式初始化,而不是涉及常量变量的表达式.
您正在使用另一个对象的值初始化浮动'b'.任何对象的值,即使它是const限定的,也不是C中的常量表达式.