相关疑难解决方法(0)

为什么灵活数组成员的静态初始化有效?

我已经为菜单编写了以下基本代码:

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);
}
Run Code Online (Sandbox Code Playgroud)

浏览一些相关问题似乎是使用灵活数组成员的唯一方法是动态地为其分配内存.但是我的编译器非常乐意编译和运行代码而不会出现任何错误或警告.这是禁止的吗?

我正在使用MinGW gcc 4.6.1并根据C99规则进行编译.

c

14
推荐指数
1
解决办法
4383
查看次数

标签 统计

c ×1