以下のC++のOpenCLコードをg ++ -c no_x.cppと微細コンパイル有効: OpenCLのベクトルタイプ:C++ 11とUNION句成分X、Y、Zにアクセスできないは
// no_x.cpp
#include <CL/cl.h>
void func() {
cl_double2 xy;
xy.x = 1.0;
xy.y = 2.0;
}
しかしCと
++を - 私はxy.s [0]、xy.s [1]などでそれを回避することができます$ 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;
^
が、それは、OpenCLのは.Xを提供する理由確かである(醜い:11は、エラーが発生します同じファイルを有効に.yコンポーネント)。これを引き起こしているC++ 11とは何ですか?私は一般にC++ 11でOpenCLをコンパイルできませんか? OpenCLのヘッダで
xy.s [0]は最もポータブルな方法ですが、醜いですが動作します。 – DarkZeros