最適化されたコードのデバッグ中に変数の値を確認できるように、変数を保持しようとしています。なぜ次のような不正な定数式があるのですか?
void foo(uint_32 x)
{
static uint_32 y = x;
...
}
質問に答える別の方法は、C++ではなくCを使用していることを思い出させることです。同じ式がC++で完全に有効であり、静的変数の初期値が定数ではない場合があります。
静的ストレージ指定子で宣言された変数は、定数値で初期化する必要があります。
例えば:
#define x 5
void foo()
{
static int y = x;
}
OR
void foo()
{
static int y = 5;
}