残念ながら、Visual C ++ 2010は、この表constexpr
(Apache Stdcxxプロジェクトから)に示されているように、C ++ 11によってもたらされる機能をサポートしていません。MSVC(MicroSoft Visual Studio C / C ++コンパイラ)はまだサポートしていません(7行目を確認してください)。 )。
ただし、foo()
本体をfoo.cpp
ファイルに保持して、中間グローバル変数を使用することはできます。
inline int foo() { return 2; }
const int aConstant = foo();
次にbar.cpp
ファイルで:
extern const int aConstant;
void bar()
{
int a = 5 * aConstant;
}
インライン化を許可するようにVisualC++を構成した場合(これがデフォルトです)、aConstant
コンパイル時に初期化されます。それ以外の場合は、実行時foo()
に初期化するために呼び出されますaConstant
が、起動時(main()
関数が呼び出される前)に呼び出されます。したがって、これは、戻り値が使用されるfoo()
たびに呼び出すよりもはるかに優れています。const