16

共有ヘッダー。

私がすることができます:

const bool kActivatePlayground=false;

複数のファイルに含まれている場合は正常に動作します。

これはできない:

const char * kActivePlayground = "kiddiePool";

エラーが発生します: シンボルが重複しています。

しかし、これは機能します:

static const char * kActivePlayground = "kiddiePool";

staticには が必要で、 には必要const char *ないのはなぜconst boolですか? さらに、常に暗黙的staticであるため、必要ではないと思いましたか?conststatic

4

2 に答える 2

31

C++ では、const変数にはデフォルトで静的リンケージがあり、非const変数には外部リンケージがあります。

複数定義エラーの理由は、

const char * kActivePlayground = "kiddiePool";

外部リンケージを持つ変数を作成します。

constちょっと待って、変数はデフォルトで静的リンケージになると言いましたよね?はい、しました。しかし、kActivePlaygroundそうではありませんconst。への非constポインタconst charです。

これは期待どおりに機能します。

const char * const kActivePlayground = "kiddiePool";
于 2013-04-05T05:01:20.990 に答える
0

定数文字配列を使用できます

const char kActivePlayground[] = "kiddiePool";

kActivePlayground は参照であるため、割り当てにも使用できます。

const char* playground_text = kActivePlayground;
于 2015-10-02T15:14:21.863 に答える