C++ C+中的共享字符串常量+;
我想定义一个可以被各种类使用的字符串常量。 因此,我创建了一个头文件并添加了:C++ C+中的共享字符串常量+;,c++,header,linker,C++,Header,Linker,我想定义一个可以被各种类使用的字符串常量。 因此,我创建了一个头文件并添加了: namespace MyConstants { extern const char* Constant1 = "SomeString"; } 这个头包含在几个.cpp文件中,我从中访问字符串 这会导致以下链接器错误: 致命错误LNK1169:找到一个或多个多重定义符号 如何更改字符串的声明以消除此链接器错误?您需要在一个翻译单元中定义值,并在标题中保留纯声明 namespace MyConstants {
namespace MyConstants
{
extern const char* Constant1 = "SomeString";
}
这个头包含在几个.cpp文件中,我从中访问字符串
这会导致以下链接器错误:
致命错误LNK1169:找到一个或多个多重定义符号
如何更改字符串的声明以消除此链接器错误?您需要在一个翻译单元中定义值,并在标题中保留纯声明
namespace MyConstants
{
extern const char* Constant1;
}
在一个翻译单元中:
namespace MyConstants
{
extern const char* Constant1 = "SomeString";
}
您需要在一个翻译单元中定义该值,并在标题中保留纯声明
namespace MyConstants
{
extern const char* Constant1;
}
在一个翻译单元中:
namespace MyConstants
{
extern const char* Constant1 = "SomeString";
}
您可以使用
constexpr
// In header
namespace MyConstants
{
constexpr const char* Constant1 = "SomeString";
}
或拆分声明和定义
// In header
namespace MyConstants
{
extern const char* Constant1;
}
及
您可以使用
constexpr
// In header
namespace MyConstants
{
constexpr const char* Constant1 = "SomeString";
}
或拆分声明和定义
// In header
namespace MyConstants
{
extern const char* Constant1;
}
及
我认为你们不应该在声明中给变量赋值。若你们在这里放一个,这会更简单。我认为你们不应该在声明中给变量赋值。若你们在这里放一个,这会更简单。我甚至不认为使用constexpr会解决它!投赞成票!:)我甚至没想到使用constexpr就能解决它!投赞成票!:)