我写了几个文件,关系如下:
档案啊:
#ifndef MACRO_HEADER
#define MACRO_HEADER
const char* CONST_CHAR_NAME = "name";
#endif
file Bh(B.cpp) 和 file Ch(C.cpp) 也包含这个通用类型定义头 Ah 当g++最终将obj文件合并到lib时,它给出了他重新定义的错误。我承认我犯了一个错误,我应将常量定义为:
const char* const CONST_CHAR_NAME = "name"; //This is OK
但是为什么编译器会给我一个重新定义的错误呢?const char* 不是常量值吗?但我使用 typeid.name 来检查const char *
and 的类型cosnt char* const
。它们是相同的:char const *。我对错误感到困惑。