求诸位c语言高高高手,还有那个赵老师,问一个C语言一个邪门的数组初始化方式

求各位c语言高高高手,还有那个赵老师,问一个C语言一个邪门的数组初始化方式
本帖最后由 wallwind 于 2012-12-03 16:05:52 编辑
static const unsigned int array[100] =
{
[0] = 0xff,
};



这个是在项目中遇到的一个初始化方式,硬是没看懂,编译器编译了也没有过。。。

求问这个是什么情况?

这个是啥初始化方式,求大神告知

还有取宏定义参数
#define _PUT(pos) (1U << (CLAN_POS_##pos))

这中间的两个##就是c语言的参数组合语法,哪里有介绍的文章可以看到
------解决方案--------------------
static const unsigned int array[100] =
{
[0] = 0xff,
};
用gcc可以编译通过的,我一开始是在android的源码中看到这种用法,当时也很糊涂,貌似没看到书上有说这个。。。


#define _PUT(pos) (1U << (CLAN_POS_##pos))

##结构则执行一种不同的任务,它把位于它两边的符号连接成一个符号,作为用途之一,它允许宏定义从分享的文本版本创建标识符,例
#define ADD_TO_SUM(sum_number ,value) \
        sum ## sum_number += value
...
ADD_TO_SUM(5,25);
它把值25加到变量sum5,注意这种连接必须产生一个合法的标识符,否则结果就是未定义的.

------解决方案--------------------
http://hi.baidu.com/wangjianzhong0/item/9d3da8977a31b137326eebf8  , 好像是gcc的扩展
------解决方案--------------------
#define _PUT(pos) (1U << (CLAN_POS_##pos))

我如果调用它:
_PUT(5)
那么得到结果就是:
1U << CLAN_POA_5