这是我的代码:
#include <stdio.h>
#include <CL/cl.h>
#include <CL/cl_platform.h>
int main(){
cl_float3 f3 = (cl_float3){1, 1, 1};
cl_float3 f31 = (cl_float3) {2, 2, 2};
cl_float3 f32 = (cl_float3) {2, 2, 2};
f3 = f31 + f32;
printf("%g %g %g \n", f3.x, f3.y, f3.z);
return 0;
}
使用 gcc 4.6 编译时,会产生错误
test.c:14:11: error: invalid operands to binary + (have ‘cl_float3’ and ‘cl_float3’)
对我来说很奇怪,因为OpenCL 规范在第 6.4 节中证明了这一点,增加了两个floatn
. 我需要包含任何其他标题吗?
但更奇怪的是,在编译时-std=c99
出现错误,例如
test.c:16:26: error: ‘cl_float3’ has no member named ‘x’
..对于所有组件(x、y 和 z)...