请问这是为什么?(有关Extern)
变量delta我想与主窗口共享
于是申明如下
//--------副窗口cpp--------
extern double delta;
//
........
//
void __fastcall Toption::Button1Click(TObject *Sender)
{
delta=StrToFloat(Edit1->Text);
}
但程序运行时提示
[Linker Error] Unresolved external '_delta' referenced from
D:\BCB PROGAMM\METIRAL\UOPTION.OBJ
请问这是为什么?谢谢!
(注:并不是由于double的关系,我把double改为float以后,照样有着问题)
问题点数:20、回复次数:4Top
1 楼jishiping(JSP 季世平)回复于 2003-06-02 22:40:41 得分 10
extern double delta; 这句话的意思是,程序中存在 double delta; 这个变量,这儿只是
声明一下,好让程序可以使用delta 这个变量。但是变量定义的时候,就不能加extern了。
对于delta这个变量,整个程序中必须有一处这样写:double delta; 而其它使用 delta 的
地方,需要写成extern double delta; 这是C语言的基本语法。Top
2 楼kingcaiyao(aking)回复于 2003-06-02 22:54:53 得分 10
同意jishiping(jsp)
你的delta变量定义在你的cpp文件中,它是一全局变量,它并不是从外部引入的,因此使用时无需extern,但如果是其它cpp文件引用这个变量就需要extern关键字。
你给出的代码中,写“extern double delta",这样编译器会认为delta变量是一个外部变量,它就会去寻找相关定义的地方,但事实上你的delta是在本cpp文件中定义,而并非是其它文件中定义的,编译器找到它定义的地方,自然就会出现”Unresolved external"链接错误。Top
3 楼s98231106(Wilson)(若即若离花)回复于 2003-06-02 23:01:11 得分 0
两位老大都来了,
偶还是闪吧!Top
4 楼fokiee(龙翔闪)回复于 2003-06-02 23:13:54 得分 0
真的是感激涕零!!
还有,就是有像砸自己脑袋的冲动!!
哎
看来以前学的C++都还给老师了呢,
真得很感谢你们,对于我这样弱智的问题,也能给与认真地回答
:)
这儿的气氛真得很好啊Top




