共享标题。
我可以这样做:
const bool kActivatePlayground=false;
在多个文件中包含时有效。
我无法这样做:
const char * kActivePlayground = "kiddiePool";
会导致错误:重复符号。
但这个可以:
static const char * kActivePlayground = "kiddiePool";
为什么const char *
需要static
,而const bool
不需要?此外,我认为由于const
始终是隐式的static
,因此static
是不必要的,那么这里需要吗?
const
本身就是隐式的static
,因此使用static
这个词甚至不必要,就像对于bool
一样。 - johnbakersconst
。因此它不是静态的。它是一个指向 const 的指针。static 关键字将其定义为静态。请这样声明和初始化它:char * const kActivePlayground = "whatever"
。 - Koushik Shettyconst
的问题,但我仍在标准中寻找为什么你的char *
需要static
的原因。在C++11 §7.1.1p7中,“命名空间作用域中声明的名称如果没有存储类说明符,则具有外部链接性,除非它由于先前的声明而具有内部链接性,并且不是声明为const。 声明为const且未明确声明为extern的对象具有内部链接性。”我知道这并没有回答你关于char *
的问题,但我还在继续寻找。这是一个有趣的问题。 - WhozCraigconst
修改的是指针所指向的内容,但并不修改实际变量,也就是指针本身。 - johnbakers