在一个Kernel函数中要用到2组常量数组,于是把他们在.cuh头文件中定义好了,之后在Kernel.cu中引用该头文件,编译报错:
如下两图所示:yy和d为所需要定义的常量数组
[attach]2906[/attach]
[attach]2907[/attach]
[attach]2908[/attach]
报错为
1>h:\master\aco_gpu\aco_gpu\aco_parameters.cuh(20): error C2144: 语法错误:“float”的前面应有“;”
1>h:\master\aco_gpu\aco_gpu\aco_parameters.cuh(20): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>h:\master\aco_gpu\aco_gpu\aco_parameters.cuh(55): error C2144: 语法错误:“float”的前面应有“;”
1>h:\master\aco_gpu\aco_gpu\aco_parameters.cuh(55): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>h:\master\aco_gpu\aco_gpu\aco_parameters.cuh(55): error C2086: “int constant”: 重定义
1> h:\master\aco_gpu\aco_gpu\aco_parameters.cuh(20) : 参见“constant”的声明
于是我把这两个__constant__ 数组从头文件删除,放在了在Kernel.cu中,就不再报错了。
请问这是怎么回事呢?我以前貌似也这么用过,没出问题啊,这次就不行,不知怎么回事。。。