I'm trying to set up a simple array type that is aware of its size in C. "Flexible arrays" seemed at first glance to be the solution, but I ran into problems. Here's what I've got so far.
Code:
typedef struct
{
int elements;
int keys[];
} key_enum;
const key_enum u_keys = { 4, {KEY_UP, 'k', 'K', '8'} };
const key_enum d_keys = { 4, {KEY_DOWN, 'j', 'J', '2'} };
const key_enum l_keys = { 4, {KEY_LEFT, 'h', 'H', '4'} };
const key_enum r_keys = { 4, {KEY_RIGHT, 'l', 'L', '6'} };
const key_enum q_keys = { 3, {KEY_ESC, 'q', 'Q'} };
It seems to work until q_keys, where keys[] is a different size from the rest. Can someone point me in the right direction to a correct implementation of what I'm trying to do here?