Cを使用して組み込みプログラミングを行う場合、高速でメモリ効率が高いため、列挙型と配列を使用してマップを実行することがよくあります。
enum {
ID_DOG = 0,
ID_SPIDER,
ID_WORM,
ID_COUNT
};
int const NumberOfEyes[ID_COUNT] = {
2,
8,
0
};
問題は、アイテムを追加/削除するときに、間違えて列挙型と配列が同期しなくなることがあることです。初期化子リストが長すぎる場合、コンパイラーはそれを検出しますが、その逆は検出しません。
では、初期化子リストが配列の長さと一致することを確認する、信頼性が高く移植性の高いコンパイル時チェックはありますか?