Dew*_*wfy 2 c++ g++ declaration extern
我有在g ++上重现的问题.VC++不会遇到任何问题.所以我有2个cpp文件:
1.cpp:
#include <string>
#include <iostream>
extern const std::string QWERTY;
int main()
{
std::cout << QWERTY.c_str() << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
2.cpp:
#include <string>
const std::string QWERTY("qwerty");
Run Code Online (Sandbox Code Playgroud)
没有魔法,我只想将字符串常量放入分隔文件中.在链接时ld产生一个错误:"未定义引用`_QWERTY'"第一个想法将两个声明包装成"extern"C"" - 没有帮助.错误和非c ++ _QWERTY仍然存在.
在此先感谢您的任何建议
看起来你可能正在遇到这个标准:
在C中,没有显式存储类说明符的文件范围内的const限定对象具有外部链接. 在C++中,它具有内部链接.
将此更改为2.cpp:
#include <string>
extern const std::string QWERTY("qwerty");
Run Code Online (Sandbox Code Playgroud)
关于"链接"在这个问题中的含义还有一些更详细的内容 - 什么是C++中的外部链接和内部链接.