【发布时间】:2015-03-07 06:32:04
【问题描述】:
我为菜单编写了以下基本代码:
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编译会报错。 -
clang++ 11.0.0给出:error: initialization of flexible array member is not allowed。
标签: c gcc struct initialization flexible-array-member