共享标题。
我可以这样做:
const bool kActivatePlayground=false;
包含在多个文件中时工作正常。
我不能这样做:
const char * kActivePlayground = "kiddiePool";
错误结果:重复符号。
但这有效:
static const char * kActivePlayground = "kiddiePool";
为什么static
需要const char *
而const bool
不需要static
?另外,我认为const
不是必需的,因为static
始终是{{1}}隐含的?
答案 0 :(得分:26)
在C ++中,const
变量默认具有静态链接,而非const
变量具有外部链接。
多重定义错误的原因是
const char * kActivePlayground = "kiddiePool";
使用外部链接创建变量。
嘿等等,我不是说const
变量默认为静态链接?是的,我做到了。但kActivePlayground
不是const
。它是指向const
的非const char
指针。
这将按预期工作:
const char * const kActivePlayground = "kiddiePool";
答案 1 :(得分:0)
您可以使用常量字符数组
const char kActivePlayground[] = "kiddiePool";
和kActivePlayground也可以用于赋值,因为它是一个引用
const char* playground_text = kActivePlayground;