求诸位c语言高高高手,还有那个赵老师,问一个C语言一个邪门的数组初始化方式
求各位c语言高高高手,还有那个赵老师,问一个C语言一个邪门的数组初始化方式
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))
------解决方案--------------------
http://hi.baidu.com/wangjianzhong0/item/9d3da8977a31b137326eebf8 , 好像是gcc的扩展
------解决方案--------------------
#define _PUT(pos) (1U << (CLAN_POS_##pos))
我如果调用它:
_PUT(5)
那么得到结果就是:
1U << CLAN_POA_5
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