OpenCL语言不支持位域.不支持他们的原因是什么?与其他忽略的部分(递归,函数指针,......)不同,有明显的理由不支持它们,我没有看到一个用于位域.我确信这不是代表委员会的疏忽,但是原因是什么?
(我存储了一些打包在int中的位,并且代码可以更好地与它们一起读取.我理解bitfields是一种很好的语法,可以避免位移和来回屏蔽,无论如何它们都是在汇编中转换的.)
我能够问这个涉及工作组的人的问题.这就是他要说的话:
位字段不可移植 - 因此它们不能用于内核参数的类型.
他们唯一的地方可以被用来对类型在内核中声明的局部变量.
OpenCL工作组并不认为这非常有用.此外,有人担心编译器在使用位域时可能无法生成有效的代码.所有这些导致工作组决定不支持OpenCL C中的位字段.