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