我用Geforce GT 540M描述了Visual Studio 2010和CUDA 4.0,但IDE不知道一些关键词

时间:2012-10-05 06:56:33

标签: c cuda

它通过用红线标出许多正确的单词来显示许多错误,但我可以正确运行。这些单词包括C关键词和CUDA关键词。你能帮助我吗? 对不起,我没有10个声誉来发布图片,也许图片更清晰。

1 个答案:

答案 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