将向量解压缩为 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...};
您还可以将结构嵌套在结构中,或将结构嵌套在向量中,或将向量嵌套在结构中,等等...
请注意指针。它们与向量并没有明显的区别,但是如果你尝试像向量一样初始化指针,你会遇到很多严重的错误,并且可能会花几天时间来修复它们。
在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...};
您还可以将结构嵌套在结构中,或将结构嵌套在向量中,或将向量嵌套在结构中,等等...
请注意指针。它们与向量并没有明显的区别,但是如果你尝试像向量一样初始化指针,你会遇到很多严重的错误,并且可能会花几天时间来修复它们。