在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;
还是我必须使用显式向量组件?还是有其他好方法以简单正确的方式做到这一点吗?
答案 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,依此类推......
小心指针。它们与向量没有明显的不同,但是如果你尝试初始化像向量这样的指针,你会得到很多令人讨厌的错误,并且可能会在几天内试图修复它们。