c语言高手进!

关于宏定义的用法,我理解不了,请看原函数:
#define EDES_IDX(A)
#define EDES_CONTENT(A,B,C) {B,C},
ITEM_STR_POS
#undef EDES_IDX
#undef EDES_CONTENT
。。。
。。
#define ITEM_STR_POS \
EDES_IDX(eDesRoot ) EDES_CONTENT(NULL, NULL, NULL)\
EDES_IDX(eDesVideo ) EDES_CONTENT(&ptVideoIcon, &ptXYGroup[0], eSTR_Video)\
EDES_IDX(eDesVideoPreset ) EDES_CONTENT(NULL, &ptXYItem[0], eSTR_VideoPreset)\
EDES_IDX(eDesContrast ) EDES_CONTENT(NULL, &ptXYItem[1], eSTR_Contrast)\
我希望回答者能看看我的程序,然后分析下,不要太理论,我只怕你们也看不懂···其实我也是刚毕业的软件工程师,实战经验不足,但理论还是懂点的···

不是高手也进来当高手了···嗨···

说对了,确实有点让人飞解,这么一长句,而且又还找不到空格在哪里,真难理解
#define ITEM_STR_POS EDES_IDX(eDesRoot ) EDES_CONTENT(NULL, NULL, NULL)EDES_IDX(eDesVideo ) EDES_CONTENT(&ptVideoIcon, &ptXYGroup[0], eSTR_Video)EDES_IDX(eDesVideoPreset ) EDES_CONTENT(NULL, &ptXYItem[0], eSTR_VideoPreset)EDES_IDX(eDesContrast ) EDES_CONTENT(NULL, &ptXYItem[1], eSTR_Contrast)

仔细看了下,好像空格在ITEM_STR_POS后面。
那么意思应该是在程序中使用
ITEM_STR_POS的时候,调用后面的那一堆函数吧,
比如
void main()
{
ITEM_STR_POS;}
这时就会把ITEM_STR_POS替换为如下语句
EDES_IDX(eDesRoot )
EDES_CONTENT(NULL, NULL, NULL)
EDES_IDX(eDesVideo )
EDES_CONTENT(&ptVideoIcon, &ptXYGroup[0], eSTR_Video)
EDES_IDX(eDesVideoPreset )
EDES_CONTENT(NULL, &ptXYItem[0], eSTR_VideoPreset)
EDES_IDX(eDesContrast )
EDES_CONTENT(NULL, &ptXYItem[1], eSTR_Contrast)
共8个函数(真多,晕)
因此在main函数中会依次调用这8个函数

不过这样理解似乎也不对,如果是依次调用8个函数,那么在每个函数的小括号后面应有一个分号,这样语句才会正确,比如
#define ITEM_STR_POS \
EDES_IDX(eDesRoot );\ //加上分号
EDES_CONTENT(NULL,NULL,NULL);\ //加上分号
EDES_IDX(eDesVideo);\ //加上分号
EDES_CONTENT(&ptVideoIcon, &ptXYGroup[0], eSTR_Video);\ //加上分号
EDES_IDX(eDesVideoPreset);\ //加上分号
EDES_CONTENT(NULL,&ptXYItem[0],eSTR_VideoPreset);\ //加上分号
EDES_IDX(eDesContrast );\ //加上分号
EDES_CONTENT(NULL, &ptXYItem[1],eSTR_Contrast); //加上分号,符号\删掉

如果不是这样的话,那真的飞一所思了,就搞不懂了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-07-23
其实说到宏定义,也不用过多解释它的概念什么的。你在程序中运用几下就知道是怎么回事了。
不过,宏定义的语句格式你得记着:
#define 标识符 字符串
语句一般放在程序开头的几行。比如:
#define PI 3.1415926
它的意思就是把3.1415926赋值给PI,又比如:
#define a(x,y) x*y
它的意思就是在主函数中若 x=2,y=3,则a(x,y)=6,因为它宏定义了a(x,y)=x*y。
记住一条的是,宏定义了,它的值(在整个程序中)是不会变的,除非你对它再一次宏定义,但这样会降低程序的可读性,所以尽量不要这样做。

参考资料:

第2个回答  2010-07-23
#define 宏定义来定义 整型常量
#undef 取消一个宏定义

下面举一个例子
#define PF 100
使用PF//这个范围PF有效,

#undef
PF在这里就无效了,就不起作用了

#undef 是为了避免宏发生重定义,有可能别的文件有写有个宏定义和你一样,而你的.c文件把2个头文件都导入了,那就会发生重定义错误。
不过现在公司对代码规范都很严格,对资源什么的命名都有自己的格式,那怕是嵌入式开发都没有看到过因为不用#undef就发生重定义的现象,有也会让写代码的人把名字改一个的。
所以很久没看到还用#undef的程序了...
第3个回答  2010-07-28
“我希望回答者能看看我的程序,然后分析下,不要太理论,我只怕你们也看不懂···

不是高手也进来当高手了···嗨···”

你都这么强了,还在这里问?!
人家好心给你回答问题,你一点感激的心情都没有,还自以为是,这种人活该得不到满意答案!
鄙视LZ的傲慢!

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网