我已经编写了以下用于菜单的基本代码:
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规则进行编译。
-pedantic
进行编译?这会导致一个错误。 - Iharob Al Asimiclang++ 11.0.0
给出的错误信息是:error: initialization of flexible array member is not allowed
。 - Danijel