正しい単語に赤い線で下線を引くとエラーが多く表示されますが、正しく実行できます。これらの単語には、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 に答える