声明cudaError_t变量时出现无法识别的令牌错误
Unrecognized token error when declaring a cudaError_t variable
我是Cuda的新手,刚刚开始编写一个简单的程序来测试它。其中可能有很多问题,但现在我的问题是我在标题中描述的错误:每当我声明一个简单cudaError_t变量时,我都会收到一个"无法识别的令牌"编译错误。这是我的代码示例:
#include <cuda_runtime.h>
#include <cuda_runtime_api.h>
extern "C" void callCudaCode(int*);
__global__ void mykernel (int *a, int *b, int *c)
{
//*c = *a + *b;
*c = 34;
}
void callCudaCode(int* results)
{
int a=3, b=8;
int *da, *db, *dc;
int size = sizeof(int);
cudaError_t myCudaError;// = cudaGetLastError();
//const char* errorStr = cudaGetErrorName(cudaError);
cudaMalloc((void**)da, size);
cudaMalloc((void**)db, size);
cudaMalloc((void**)dc, size);
cudaMemcpy(da, &a, size, cudaMemcpyHostToDevice);
cudaMemcpy(db, &b, size, cudaMemcpyHostToDevice);
mykernel<<<1,1>>>(da,db,dc);
cudaMemcpy(results, dc, size, cudaMemcpyDeviceToHost);
cudaFree(da);
cudaFree(db);
cudaFree(dc);
}
还有另一个main.cpp文件使用了这个文件,但我认为它没有任何相关的内容来解释这个错误,所以我没有包括它。如果我对cudaError_t变量声明进行注释,代码编译得很好(它执行得不好,但那是另一回事)。
我已经在谷歌上搜索了这个问题,但只发现了与我的示例无关的错误:空格错误、printf错误。。。
据我所知,cudaError_t是一个在cuda_runtime_api.h中定义的枚举,所以通过包含它,我应该不会有任何问题。。。
有人知道发生了什么事吗?
编辑
我刚刚附加的文件是mycuda.cu。还有一个名为main.cpp的文件,它只是从mycuda.co调用callCudaCode()函数。我正在使用Qt Creator和qmake来构建项目。是的,我注意配置了.pro文件,这样Qt就不会试图编译.cu项目。如果我对声明myCudaError变量的行进行注释,则项目编译良好。如果我取消对它的注释,就会出现编译问题。
cudaError
是一个保留的CUDA关键字。
不要将其用作变量名。
将其更改为类似的内容
cudaError_t my_cudaError;
(cudaError
已在driver_types.h
中定义。它是枚举类型。)
行
cudaError_t myCudaError;// = cudaGetLastError();
似乎在cudaError_t
之前有一个Unicode 0x200B"零宽度空格"字符。删除它(或者如果不确定,删除并重新键入整行),然后重试。
相关文章:
- C++出现控制台错误.我无法识别源代码的问题
- C++ 编译错误:gnu_printf是无法识别的格式函数类型
- 哗啦��错误:无法识别任何一组可以驱动指定关节的控制器
- GCC-7:错误:无法识别的命令行选项"-M64"
- C ++中的函数为什么我的编译器无法识别错误()
- OPENCV错误在XCode 8中加载Fisher面部识别器时
- 如何修复 Typedef 变量未识别错误 C++ (Visual Studio 2017)
- if 语句错误地识别括号中的空格
- 无法识别的模板声明错误 - 不明白我做错了什么
- 需要帮助识别简单多线程代码中的错误
- 识别指针处理方式中的错误
- 将“getopt_long”与无法识别的长选项一起使用时出现分段错误
- Windows Web Services框架中发生了无法识别的错误
- QT5对QinputDialog和Qmessagebox的未识别引用.错误
- 插入protobuf时SQLite无法识别的令牌错误:要处理哪些令牌以及如何处理?
- 控制台崩溃,尚无法识别错误
- 构建时OPENCV流量信号识别错误
- jenkins在构建cpp代码时不会识别错误
- 在g++中添加-M标志会导致文件格式不可识别错误
- 循环的范围识别错误的类型(C2440)