Я написал следующий базовый код для меню:
typedef struct Menu {
char* title;
unsigned num_submenus;
struct Menu *submenu[];
} Menu;
Menu sub1 = {"Submenu 1", 0, {NULL}};
Menu sub2 = {"Submenu 2", 0, {NULL}};
Menu Main = {"Main Menu", 2, {&sub1, &sub2}}; /* No Error?! */
int main()
{
printf("%s\n", Main.title);
printf("%s\n", Main.submenu[0]->title);
printf("%s\n", Main.submenu[1]->title);
}
Просматривая несколько связанных вопросов, кажется, что единственный способ использования гибкого члена массива - динамически выделять ему память. Однако мой компилятор с удовольствием компилирует и запускает код без каких-либо ошибок или предупреждений. Это верботен?
Я использую MinGW gcc 4.6.1 и компилирую в соответствии с правилами C99.