CUDA:__ device__和__global__错误:在“unsigned”/“void”之前的预期构造函数,析构函数或类型转换“

时间:2013-05-14 18:14:50

标签: c++ cuda compiler-errors syntax-error nsight

所以我的问题是:我在mac os x mountain lion上使用Nvidia的nsight应用程序来编写CUDA应用程序:源代码是.h / .cu / .cpp mix。

我有一个带有以下声明的HelloCUDA.h标头:

//yep, both taken from examples.
__device__ unsigned int bitreverse2(unsigned int number);

__global__ void bitreverse(void *data);

我有一个定义这些方法的HelloCUDA.cu文件:

__device__ unsigned int bitreverse3(unsigned int number) {
    //definition
    return number;
}

__global__ void bitreverse4(void *data) {
    //another definition...
    bitreverse3(idata[threadIdx.x]);
}

直到我使用eclipse(nsight)新类向导添加了一个新的C ++类文件(.h / .cpp)。现在,当我尝试构建那个东西时:

../src/HelloCUDA.h:21: error: expected constructor, destructor, or type conversion before ‘unsigned’
../src/HelloCUDA.h:23: error: expected constructor, destructor, or type conversion before ‘void’

我检查了项目设置,我认为没有任何变化。

那么,是什么给出的?拜托,有人可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

您可能使用“CUDA C Bitreverse Application”模板创建了新的CPP文件。该模板适用于CUDA C文件。只需删除文件内容并添加C ++代码即可。

答案 1 :(得分:0)

上述任何解决方案都可以帮助我。 只需导入文件的操作:

#include "cuda_runtime.h"
#include "device_launch_parameters.h"

解决了。 (我在VS Studio2019下)