次のプログラムを検討してください: (ここでライブデモを参照してください。 )
#include <iostream>
inline double fun()
{
return 3.0;
}
extern double m;
double d2=m;
int main()
{
std::cout<<d2;
}
double m=fun();
プログラムの出力を 3.0 として取得することを期待していましたが、出力が 0 になりました。なぜですか?
変数 d2 が静的に初期化されているように見えますか?
動的に初期化するべきではありませんか?
g++ 4.8.1、4.9.2、および MSVS 2010 でテストし、出力として 0 を取得しました。