我为菜单编写了以下基本代码:
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 规则下编译。