今天遇到了一个C++Builder 全局变量的问题,经过查找资料,终于解决了
A.CPP
#include <B.H>
ShowMessage(MainVersion);
B.H
AnsiString MainVersion;
C.CPP
#include <B.H>
MainVersion=”T-bag”;
这样三个文件,C.CPP 修改了 MainVersion 的值后,A.cpp显示为空,奇怪哈。
Google 得到:全局变量需要加:extern 关键字
于是修改为:extern AnsiString MainVersion
问题依然如故
再Google ,原来VCL 对 extern 关键字做了扩展,改为
extern PACKAGE AnsiString MainVersion;
编译失败,
在B.CPP 中加入
AnsiString MainVersion;
问题全部解决。
奇怪哈,以前声明全局变量只放在.H 文件中,用extern PACKAGE 关键字还需要在.CPP中写一份,不知道其中的原因,如果哪位看官明白,请告诉小弟。