C++ 在头文件中声明并初始化常量
我精通以下典型范例:C++ 在头文件中声明并初始化常量,c++,objective-c,constants,header-files,compile-time-constant,C++,Objective C,Constants,Header Files,Compile Time Constant,我精通以下典型范例: //.h extern const int myInt; //.c, .m, .cpp, what have you const int myInt = 55; 但是必须有一种方法将其放入.h文件中,以便与库或其他无法访问实现文件的实例一起使用 例如,我试图将一个NSString常量添加到Xcode项目中的.h文件中,如下所示: static NSString *const myString = @"my_string"; 但是,当我尝试使用myString时,会出现
//.h
extern const int myInt;
//.c, .m, .cpp, what have you
const int myInt = 55;
但是必须有一种方法将其放入.h
文件中,以便与库或其他无法访问实现文件的实例一起使用
例如,我试图将一个NSString
常量添加到Xcode项目中的.h
文件中,如下所示:
static NSString *const myString = @"my_string";
但是,当我尝试使用myString
时,会出现错误
初始值设定项元素不是编译时常量
在
myString
上,表示未正确实例化它。如何在C++或ObjeCIT-C头文件中声明编译时常数?C++中的< P> >代码> const < /Cord>对象有内部链接,除非明确声明“代码> ExtNe<代码>,所以将定义放入头文件中是没有问题的,例如:
const int myInt = 55;
使用此定义和第一个声明,myInt
可以用作整数常量表达式,例如数组边界等
我不能回答目标C.P/P,所以这是C还是C++?你可以用C++中的运行时表达式初始化全局变量,但在C.中不好的是,它知道C将不可能更新标签。@ Vorac:这在G++中是有效的(假设你实际上是编译C++源代码)。你的编辑让我浪费时间重新验证一些已经正确的东西,这使得这个答案在内部不一致。为什么我要对示例说“
const
对象具有内部链接”,然后说显式的static
?如果你对某事不确定,那么评论;不要编辑。我已回滚您的编辑。