Why do you have "struct Menu Menu00;" I thought it should just be "Menu Menu00;" ?
You are correct, however it is valid though and a left over from C, and as a result people often think its needed.
PeterH has pointed out the fundamentals. C++14 will allow compound literals, and are currently supported by GCC, you can use:
Menu_t Menu = { "Run", NULL, &MenuFoo, NULL , NULL , NULL }; // valid initialisation syntax
Menu = ( Menu_t ){ "Run", NULL, &MenuFoo, NULL , NULL , NULL }; // valid assignment syntax