-1

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

4

1 回答 1

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
于 2012-10-05T07:47:29.920 回答