将向量解压缩为 C 中的变量

Unpack vector to variables in C

在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;

或者我必须使用显式向量分量吗?或者有没有其他简单又正确的好方法?

您需要分别为每个变量赋值。你当然可以写一些具体的function/macro来完成这个任务,但这不值得。

在 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...};

您还可以将结构嵌套在结构中,或将结构嵌套在向量中,或将向量嵌套在结构中,等等...

请注意指针。它们与向量并没有明显的区别,但是如果你尝试像向量一样初始化指针,你会遇到很多严重的错误,并且可能会花几天时间来修复它们。