私は次のような関係でいくつかのファイルを書きます:
ファイルああ:
#ifndef MACRO_HEADER
#define MACRO_HEADER
const char* CONST_CHAR_NAME = "name";
#endif
ファイルBh(B.cpp)とファイルCh(C.cpp)にもこの共通型定義ヘッダーが含まれていますAh g ++が最終的にobjファイルをlibに結合すると、再定義エラーが発生します。定数を次のように定義する必要があります。
const char* const CONST_CHAR_NAME = "name"; //This is OK
しかし、なぜコンパイラーは再定義エラーを私に与えるのですか?const char *は定数値ではありませんか?しかし、typeid.nameを使用してとのタイプをチェックしconst char *
ます cosnt char* const
。それらは同じです:charconst*。私はエラーと混同しています。