Cでは、intsやfloatのようなプリミティブは、最初に宣言されたときに0に初期化されています。プリミティブを含む構造体が宣言されている場合も同様です。プリミティブが初期化されていないかどうかを確認する簡単な方法を見つけるのが難しいです。Primitiveが初期化されていないかどうかを確認する簡単な方法?
たとえば、ヘッダファイルに宣言されたint型のインスタンス変数があるとします。実装コードでこの変数を使用する必要があります。この値が初期化されているかどうかを知ることは重要です。ゼロをチェックすることは実際にはオプションではありません。なぜなら、その値が実際にゼロであると想定されている場合、既に変更された値を再初期化したからです。ポインタがないので、NULLをチェックすることもできません。
私が思いついた唯一の解決策は、実行可能コードの最初の部分の変数を、私が知っているいくつかの値にプログラムの残りの部分と関連性がないように初期化することです。たとえば、値がゼロ以下にならない場合は、-1に初期化してまだ初期化されていないことを確認します。しかし、これは本当に厄介なようですが、変数を割り当てることができる値の範囲が変更されると問題を引き起こす可能性があります。
この種の問題のお勧めはありますか?前もって感謝します!
初期化されていない変数を使用するには、UBあります。 スイッチ-Wall(gcc)を渡すと、初期化されていない変数をすべて追跡できます。 gccは次のような報告をします: 'ddd.c:8:warning: '私はこの関数で初期化されていません' –