|
本帖最后由 68336016 于 2014-3-2 02:43 编辑
我之前都是全局变量里将各个菜单项定义好,然后通过一个函数对其初始化。
没事想精简下,于是就模仿常见的做法,在定义时候就初始化。
但是怎么看都无法通过编译的,父子菜单项你中有我,我中有你,谁先都会说对方没定义。
可是这种写法网上很常见,理论上应该能用的。
- #include "stdafx.h"
- struct MenuItem
- {
- char * MenuString;
- struct MenuItem *Children; //子节点
- struct MenuItem *Parent; //父节点
- };
- struct MenuItem MainMenu[1] = //主菜单,简单起见只定义1个
- {
- {"MainMenu",SubMenu, NULL},
- };
- struct MenuItem SubMenu[2] = //子菜单
- {
- {"SubMenu_1",NULL, MainMenu},
- {"SubMenu_2",NULL, MainMenu},
- };
- int main(int argc, _TCHAR* argv[])
- {
- return 0;
- }
复制代码
搞清楚了,我一开始是用VC,加了下面两行也不行,是因为中括号里有数字,不过我看别人的代码中括号都是带数字。
struct MenuItem MainMenu[1];
struct MenuItem SubMenu[2];
不过在MDK里面,中括号有没有数字一样能编译过去。
可能各种编译环境不同,反正中括号里不加数字,在VS2005,GCC,MDK环境下都能正常编译通过
- struct MenuItem
- {
- char * MenuString;
- struct MenuItem *Children; //子节点
- struct MenuItem *Parent; //父节点
- };
- struct MenuItem MainMenu[];
- struct MenuItem SubMenu[];
- struct MenuItem MainMenu[1] = //主菜单
- {
- {"MainMenu",SubMenu, NULL},
- };
- struct MenuItem SubMenu[2] = //子菜单
- {
- {"SubMenu_1",NULL, MainMenu},
- {"SubMenu_2",NULL, MainMenu},
- };
- int main(int argc, _TCHAR* argv[])
- {
- return 0;
- }
复制代码
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|