値の数を表す要素を持つ列挙型の値によってインデックスが付けられたグローバル配列があります。配列は、残念ながら 0 ではない特別な値で初期化する必要があります。
enum {
A, B, C, COUNT
};
extern const int arr[COUNT];
.cpp ファイルの場合:
const int arr[COUNT] = { -1, -1, -1 };
列挙型はときどき変更されます: 新しい値が追加され、いくつかは削除されます。修正したばかりのコードのエラーは、初期化値の数が不十分であり、配列の残りの部分がゼロで初期化されていました。この種のエラーに対する保護策を講じたいと思います。
arr
問題は、 が特別な値 (例では the ) で常に完全に初期化されることを保証するか-1
、開発者の注意を引くためにコンパイルを中断して、配列を手動で更新できるようにすることです。
最近の C++ 標準は利用できません (古い ms コンパイラと独自のジャンク)。テンプレートはある程度使用できます。STL と Boost は強く禁止されています (質問しないでください) が、必要な部分をコピーしたり再実装したりすることは気にしません。
それが不可能であることが判明した場合は、特別な値を 0 に変更することを検討する必要がありますが、それは避けたいと思います: 特別な値 ( -1
) は少し特殊すぎて、コードの残りの部分で暗黙的にエンコードされている可能性があります。 .
私は DSL とコード生成を避けたいと思います: プライマリ ビルド システムは ms windows のジャムであり、そこで生成されたものを取得することは主要な PITA です。