读书人

C 的foreach解决方案

发布时间: 2013-07-08 14:13:00 作者: rapoo

C 的foreach
那位大虾用#define玩过foreach?搞个通用点的瞻仰一下。

下面的是我写的,太简单了。抛砖引玉

#define SIZE(array) sizeof (array) / sizeof *(array)
#define foreach(x,array) for(int* x = array; x< array+SIZE(array);x++)
int main(void){
int arr[5]={1,2,3,4,5};
int size = sizeof (arr) / sizeof *(arr);
printf("arr=[ ");
for(int* x = arr; x< arr+size ;x++){
printf("%d ", *x);
}
printf("]\n");
foreach(x,arr){
*x+=10;
printf("value: %d\n", *x);
}
return 0;
}


纯C for?each #define
[解决办法]
boost里面有个foreach宏
[解决办法]
foreach(x,arr){
你这个神秘的标示符 x 是怎么出现的

对于一个对这个 宏实现 一无所知的人 能用好这个宏吗?
[解决办法]
引用:
Quote: 引用:

再定义一个宏in啊。

怎么搞咧?

惭愧,能力有限,搞不定。
[解决办法]
Qt里面自带forreach,你可以去看看源码研究研究
[解决办法]
引用:
知道foreach的人就知道怎么用这个x

知道foreach的人 都知道 那个变量得定义了 才用
Java
foreach(int x : nArr)

C#
foreach(int i in nArr)

现在C你用宏
无法在()里面定义变量
那么你应该是在外面定义变量之后 作为一个参数
填进foreach

而不是 什么信息都 突然冒出一个 标示符
逻辑上断层了

读书人网 >C语言

热点推荐