如何设置extern变量的值?

时间:2014-03-12 05:05:35

标签: c visual-c++ extern parsec unresolved-external

我正在使用glomosim模拟器进行网络练习。 网络层下的路由协议文件之一有以下行。文件名为" ARAN.pc " (我从互联网上获取此文件,我想替换默认情况下使用真正的路由协议即ARAN在模拟器中设置的aodv协议):

extern int maliciousNodesPercentage; //defined and set in driver.pc

当我编译模拟器(使用bat文件)时显示我的错误:

*call pcc -user_main -Zi -Ox -I..\include\ -clock longlong -o ..\bin\glomosim driver.pc temp.lib tmp-3572-0.c driver.init.c temp.lib(aran.obj) : error LNK2001: unresolved external symbol _maliciousNodesPercentage ..\bin\glomosim.exe : fatal error LNK1120: 1 unresolved externals*

当我打开driver.pc文件时,我找不到 maliciousNodesPercentage

如何设置变量的值?

1 个答案:

答案 0 :(得分:1)

必须声明外部变量somewhere。如果您只使用extern int maliciousNodesPercentage,它会告诉编译器此变量是在其他模块中定义的,因此不会为其分配任何存储空间。在链接阶段,链接器将放入变量的实际地址。由于您没有在任何地方定义它,因此您将得到一个未解析的符号。

例如,在main中,您将其定义为全局变量:

  int  maliciousNodesPercentage;

并在所有其他模块(或头文件)中执行:

  extern int maliciousNodesPercentage;

然后你可以像任何其他全局变量一样访问它。