将向量解包到C中的变量

时间:2017-01-03 10:37:40

标签: c vector opencl

在Python中,我可以使用itterables初始化变量并自动解压缩,如

a,b,c = [1,2,5]

在(openCL)C中,我可以做类似的事情吗?

uint4 vec = (uint4)(1,2,3,4);
uint a,b,c,d;
a,b,c,d = vec;

还是我必须使用显式向量组件?还是有其他好方法以简单正确的方式做到这一点吗?

2 个答案:

答案 0 :(得分:2)

您需要分别为每个变量分配值。你当然可以编写一些特定的函数/宏来完成这项任务,但它不值得。

答案 1 :(得分:0)

在C中,其语法如下:

yourType variablename[] = {yourdata};

如果使用多个变量

,甚至可以嵌套向量
yourType variablename[][] = {{yourdata1},{yourdata2},...};

即使您尝试初始化结构,也可以使用它,但必须按照在结构上声明的顺序输入参数

struct yourStruct {
type1 name1;
type2 name2;
type3 name3;
...
}

struct yourStruct variablename = {(type1) data1, (type2) data2, (type3) data3...};

你也可以在结构中嵌入一个struct,或者在一个vector中嵌入一个struct,或者在一个struct中嵌入一个vector,依此类推......

小心指针。它们与向量没有明显的不同,但是如果你尝试初始化像向量这样的指针,你会得到很多令人讨厌的错误,并且可能会在几天内试图修复它们。