首页 / 软件开发 / C++ / 跨C++文件和库对静态对象进行初始化
跨C++文件和库对静态对象进行初始化2013-11-04 ibm Zhipeng.Liu假期通常是个回顾过去的好时候。这里就是我正在思考的上个月使我产生"ah-hah"瞬间的一个 问题。问题:当你编译下面的C++程序的时候,你可能认为模块(module)中的对象会先编译并先初始 化。这种假设可能得不到预期的结果。X.h :#include <string>using namespace std; // 译者注: 加上这行class CObjet { public: static const string STRINGX;};X.cpp:#include <X.h>using namespace std; // 译者注: 这行可以不要const string CObjet::STRINGX = "001";Y.cpp:#include <iostream>#include <X.h>const string STRINGY= CObjet::STRINGX;int main () {cout << "CObjet::STRINGX [" <<CObjet::STRINGX << "]" << endl;cout << "STRINGY [" << STRINGY << "]" << endl;return 0;}如果用下面的命令来编译:xlC -c -I./ X.cpp -o X.oxlC -c -I./ Y.cpp -o Y.oxlC -o binary X.o Y.o