const变量的初始化

时间:2010-10-06 13:11:42

标签: c++ visual-c++ initialization const

我有这样的代码:

bool doSomething()
{ 
  std::cout << "I'm here!"
  return true;
}
const bool x = doSomething();

如果放在我的Visual C ++控制台应用程序中的cpp文件中,代码将在输入main()方法之前按预期执行。

但是,如果我将此代码放在静态链接库项目(链接到我的控制台应用程序)中的.cpp文件中,则永远不会执行代码。我没有在这个文件中定义任何从外部使用的方法,没有相应的.h文件。那么链接器是否可能不链接文件? 我怎么能避免这个?

(实际上,如果我为cpp文件创建头文件,则会执行代码,在cpp-和h文件中放置另一个方法“void dummy(){}”并从main调用dummy()。)

非常感谢!

2 个答案:

答案 0 :(得分:5)

这应该把事情做好。

  

$ 3.6.2 / 4-“这是   实现 - 定义是否   动态初始化非本地   变量与静态存储持续时间   是在第一个陈述之前完成的   主要。 如果初始化是   推迟到某个时间点之后   主要的第一个陈述,它应该   在第一次使用之前发生   函数或变量在。中定义   与变量相同的翻译单位   要初始化.34“

答案 1 :(得分:1)

当代码在静态库中时,链接器只会在实际使用时链接它。这会减小二进制文件的大小。