带花括号和逗号的宏函数要怎么拆分

2019-12-27 18:56发布

翻看到一个老早前的贴子,菜单相关的程序,研究里面的程序的时候深感吊爆了,里面有个宏定义函数找不到资料,特来请教万能的坛友。
帖子链接:https://www.amobbs.com/thread-798580-1-1.html

查了一些相关资料,宏定义函数可以提高程序运行效率,一些短的函数可以用宏来定义,不但可心兼容不同的数据类型,可读性也较强。
比如取大值,求乘积
#define MAX(x,y) (((x)>(y))?(x):(y))
#define Q(x) (x)*(x)

调用的时候就象使用函数一样
int m=10, n=9, result=0;
result = MAX(m,n);
得出来的result = 10

result = Q(m+n);
得出来的result = 8100

看起来就是高大上。

但是这位大神坛友贴子里一段程序定义了一个宏函数,带 “{}”,花括号里面又带 “,” 这就完全看不懂了。
不知道这样的的宏函数要怎么理解,应该怎么拆分。

//U8 _CONST_ * _CONST_ TopItemCN[]=
U8 * _CONST_ TopItemCN[]=
{
        {"功能"},
        {"参数"},
        {"测量"},
        {"语言"},
        {"测试"},
};

//U8 _CONST_ * _CONST_ TopItemEN[]=
U8 * _CONST_ TopItemEN[]=
{
        {"Function"},
        {"Parameter"},
        {"Measure"},
        {"Language"},
        {"Test"},
};

//宏定义
#define MenuWhat(n) {(U8 **)n,(sizeof(n)/sizeof(U8 *)),0}
//图标层
_CONST_ struct Menu IcoMenu[] =
{
        MenuWhat(TopItemCN),
        MenuWhat(TopItemEN),
};

这个MenuWhat()是怎么个机制?



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。