以下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