它通过用红线标出许多正确的单词来显示许多错误,但我可以正确运行。这些单词包括C关键词和CUDA关键词。你能帮助我吗? 对不起,我没有10个声誉来发布图片,也许图片更清晰。
答案 0 :(得分:2)
我有类似的问题。问题是IDE尝试独立于nvcc自行解析文件,但它不了解某些关键字。结果,它做了一些错误的假设(例如,认为__global__
是一个变量/函数的名称,然后混淆了它后面有另一个名称并忽略它)然后然后一切都从他身上消失了
由于Visual Studio的IDE假定声明_MSC_VER
,而CUDA编译器假定已声明__CUDACC__
,您可以区分IDE和CUDA解析的内容。
所以,我所做的是创建一个帮助头文件sense.h
,我在所有.cu
文件的开头(仅包含那些文件)中包含它。在sense.h
内,我将所有特定于CUDA的关键字定义为宏:
#ifdef _MSC_VER
/*
Include this file at the very beginning of your .cu files to make Visual Studio IntelliSense more compatible with it.
Do -NOT- include it in .cpp files or header files
*/
#if !defined(__CUDACC__)
//unfortunately there is no IntelliSense macro.
//Fortunately, __CUDACC__ is not defined when IntelliSense parses the file.
#define __CUDACC__
#include <host_defines.h>
#include <device_functions.h>
#ifndef __device__
#define __device__
#endif
#ifndef __host__
#define __host__
#endif
#ifndef __global__
#define __global__
#endif
#ifndef __forceinline__
#define __forceinline__ __forceinline
#endif
#endif
#endif