C++ ‘;检查CUDAERRORS’;未在此范围中声明

C++ ‘;检查CUDAERRORS’;未在此范围中声明,c++,cuda,C++,Cuda,我写了一个新的CUDA程序,但当我编译时,我得到一个错误,“checkCudaErrors”没有在这个范围内声明。所以我添加了#include“helper\u cuda.h”,但我仍然有同样的问题 我用VisualStudio代码打开了helper_cuda.h文件,发现这个文件的大部分是灰色的。问题是我没有定义\uuu DRIVER\u TYPES\u H\uu,所以我添加了\include“DRIVER\u TYPES.H”。但这是无用的。在driver\u types.h文件中,它显示我

我写了一个新的CUDA程序,但当我编译时,我得到一个错误,
“checkCudaErrors”没有在这个范围内声明
。所以我添加了
#include“helper\u cuda.h”
,但我仍然有同样的问题

我用VisualStudio代码打开了helper_cuda.h文件,发现这个文件的大部分是灰色的。问题是我没有定义
\uuu DRIVER\u TYPES\u H\uu
,所以我添加了
\include“DRIVER\u TYPES.H”
。但这是无用的。在driver\u types.h文件中,它显示我已经有了定义
\uu driver\u types\u h\uu
。我怎样才能修好它


所以真正的问题是,driver\u tyeps.h文件显示我已经有了
\uu driver\u TYPES\u h\uu
的定义,但是helper\u cuda.h显示我没有定义。

你必须自己定义它,比如:

#define checkCudaErrors(call)                                \
  do {                                                        \
    cudaError_t err = call;                                   \
    if (err != cudaSuccess) {                                 \
      printf("CUDA error at %s %d: %s\n", __FILE__, __LINE__, \
             cudaGetErrorString(err));                        \
      exit(EXIT_FAILURE);                                     \
    }                                                         \
  } while (0)

我通过更改include语句的顺序解决了我的问题。 起初,我的计划是这样的:

    #include "helper_cuda.h"
    #include "driver_types.h"
但现在,它是:

    #include "driver_types.h"
    #include "helper_cuda.h"

我不知道为什么,但它只是工作。

在Cuda示例中,它没有
checkCudaErrors
的定义,但我仍然可以使用此函数。那么,我应该怎么做才能使用helper_cuda.h中定义的函数,而不是自己定义它。@hytdt如何构建程序?你的相机是什么?