C++ 存储大小为';var';isn';不知道

C++ 存储大小为';var';isn';不知道,c++,C++,我有一个在VC++下运行良好的程序,但在GCC下给了我一个错误 在log.h内: namespace logType { enum Enum { None = 0, Info, Warning, Error, }; std::string Name[]; } std::string logType::Name[] = { "None", "Info", "WARNING", "

我有一个在VC++下运行良好的程序,但在GCC下给了我一个错误

log.h内:

namespace logType { enum Enum { None = 0, Info, Warning, Error, }; std::string Name[]; } std::string logType::Name[] = { "None", "Info", "WARNING", "ERROR" }; 命名空间日志类型{ 枚举枚举{ 无=0, 信息, 警告 错误 }; std::字符串名[]; } 在log.cpp中:

namespace logType { enum Enum { None = 0, Info, Warning, Error, }; std::string Name[]; } std::string logType::Name[] = { "None", "Info", "WARNING", "ERROR" }; std::字符串日志类型::名称[]={ “没有”, “信息”, “警告”, “错误” }; 当我编译log.cpp时,这工作得很好。但是,如果任何其他文件包含log.h,则该文件会出错:

错误:“logType::Name”的存储大小未知

我尝试在一个或两个文件中指定Name[]的数组大小,但这只会将错误更改为重新声明的错误


我怎样才能让它在GCC下合作?

extern
添加到
log.h
对您姓名的声明中。您的符号出现在两处。

extern
添加到
log.h
的姓名声明中。您的符号出现在两处。

何时出现错误,链接*.o文件时还是生成.o文件时?何时出现错误,链接*.o文件时还是生成.o文件时?是。函数不需要它(尽管它不会造成伤害),但在头中声明的变量需要extern.Yes。函数不需要它(尽管它不会造成伤害),但在头中声明的变量需要外部变量。