c ++ builder XE2中的变量在组件调用单元时不进行初始化

时间:2013-04-19 01:23:37

标签: global-variables c++builder c++builder-xe2

我有一个声明

的单位(WebFunctions.h)
String RawURLAllowedChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~.-_";

此单元在应用程序中运行良好。但是当我添加一个也声明WebFunctions.h的组件时,RawURLAllowedChars的初始化不会发生(RawURLAllowedChars = NULL)。

要让应用程序恢复工作,再删除组件的类声明仍然需要删除WebFunctions.obj文件。

注意:.cpp文件中的任何声明,在extern文件中有或没有.h声明,也不起作用。

这是XE2中的一个错误,或者我遗漏了什么?感谢。

Obs。:#ifndef .. #endif

中的Var声明

2 个答案:

答案 0 :(得分:0)

不要在头文件中初始化全局变量。在.h文件中将变量声明为extern,然后在相应的.cpp文件中初始化它,例如:

WebFunctions.h:

extern const String RawURLAllowedChars;

WebFunctions.cpp:

const String RawURLAllowedChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~.-_";

答案 1 :(得分:0)

这更像是一种解决方法而不是真正的解决方案...但是......

注释(在主应用程序的.cpp文件中)带有 #pragma link“Component”的行,添加了使用WebFunctions.h(不是初始化单元)的组件。

删除Debug \ Win32文件夹中的所有构建文件。

重新编译应用程序。