我不是很习惯,也不太了解 C++ 中全局变量的使用,也无法解决这里的问题,尽管我几乎可以肯定我以正确的方式使用声明。我有一个无序的地图,其中包含来自文件的参数。这工作正常,我已经输出了内容,一切正常。但我希望这个映射在我的程序中随处可用,这样我就不必每次都将它作为参数传递,因此使用全局变量。我有一点 typedef :
typedef tr1::unordered_map<string,float> unmap;
然后是读取参数的函数:
unmap readParameters(string filename);
然后是全局范围声明(当然,主范围之外的所有内容,尽管在同一个文件中,我仍然没有任何标题):
extern unmap params;
做作是在 main() 函数中进行的:
unmap params=readParameters(inputfile_name);
(注意:我尝试使用和不使用“unmap”,但同样的错误)。我有一个函数 displayInformation() 来显示它的内容,我在其中使用我的地图“参数”:
for (unmap::iterator it=params.begin();it!=params.end();it++){
cout<<it->first<<" = "<<it->second<<endl;
}
但是 g++ 呻吟着:
Undefined symbols for architecture x86_64:
"_params", referenced from:
_main in loca.o
displayInformation() in loca.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
make: *** [loca] Error 1
那么我应该如何声明/使用它才能从任何函数中看到它?