externの配列定義を使ったビルド時の配列サイズチェック方法 (MINIX3より)
#define RESOURCE_NUM (8)
#define ARRAY_NUM (8)
struct resource {
int id;
unsigned int addr;
int len;
};
struct resource rscs[] = {
{ 0, 0x10, 4 },
{ 1, 0x14, 2 },
{ 2, 0x16, 2 },
{ 3, 0x18, 4 },
{ 4, 0x20, 1 },
{ 5, 0x21, 1 },
{ 6, 0x22, 2 },
{ 7, 0x24, 4 },
};
int array[] = { 1, 2, 3, 4, 5, 6, 7, 8 };
extern int dummy[(RESOURCE_NUM == sizeof(rscs)/sizeof(rscs[0])) ? 1 : -1];
extern int dummy[(ARRAY_NUM == sizeof(array)/sizeof(array[0])) ? 1 : -1];