メニュー用に次の基本的なコードを作成しました。
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 ルールでコンパイルしています。