以下C++的OpenCL代码编译细跟克++ -c no_x.cpp:OpenCL的矢量类型:无法访问联合在一起分量x,y和z与C++ 11启用
// no_x.cpp
#include <CL/cl.h>
void func() {
cl_double2 xy;
xy.x = 1.0;
xy.y = 2.0;
}
但随着C++ - 11启用相同的文件给出了错误:
$ g++ -std=c++11 -c no_x.cpp
nox.cpp: In function ‘void func()’:
nox.cpp:7:7: error: ‘union cl_double2’ has no member named ‘x’
xy.x = 1.0;
^
nox.cpp:8:7: error: ‘union cl_double2’ has no member named ‘y’
xy.y = 2.0;
^
我可以避开它xy.s [0],xy.s [1]等,但这是丑陋的(这当然是原因的OpenCL提供了.X, .y组件)。 C++ 11导致这种情况的原因是什么?我通常可以不用C++ 11编译OpenCL吗?
xy.s [0]是最便携的方式,它很丑,但工作。 – DarkZeros