我不是很习惯并且不太了解在C++中使用全局变量,并且无法在这里设法解决问题,尽管我几乎确定我是以正确的方式使用声明。 我有一个无序的地图,其中包含一个文件的参数。这工作正常,我输出的内容,一切都好。 但我希望这个地图在我的程序中随处可见,这样我就不必每次都将它作为参数传递,因此使用全局变量。 我有一点点的typedef:如何在C++中声明/使用extern map
typedef tr1::unordered_map<string,float> unmap;
那么函数读取参数:
unmap readParameters(string filename);
那么全球范围内声明(外主菜的一切,虽然在同一个文件,我还没有任何头):
extern unmap params;
做作在main()函数取得:
unmap params=readParameters(inputfile_name);
(注:我尝试过和没有“unmap”,但同样的错误)。 而且我有一个功能displayInformation(),以显示其内容中,我用我的地图“PARAMS”:
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
所以,我应该如何申报/使用它可以从任何函数中看到它?
http://stackoverflow.com/questions/1433204/what-are-extern-variables-in-c我认为这是详细解释。 – fonZ 2013-05-11 15:37:03
谢谢我明白了!我已经阅读这篇文章,但似乎我错位了变量的声明。 – 2013-05-14 09:29:34