Nsight Eclipse 5.5标识符未定义

时间:2013-09-20 22:21:20

标签: c eclipse cuda nsight

在一个包含许多.cu文件和.h文件的项目中,我在main.cu中定义了一些常量,如下所示(仅显示一个例子):

__device__ __constant__ unsigned int x[1];

#include "second.cu"

... some code...

在文件second.cu中我试图使用该常量,如下所示:

cudaMemcpyToSymbol(x, y, sizeof(xx));

但是Eclipse给了我错误:标识符“x”未定义。

我注意到#includes在我的main.cu中,就像header.h一样,我需要再次专门添加所有.cu文件。这产生了一些我使用#pragma once解决的重新定义问题。

我是Eclipse的新手,发现一些关于CDT的抱怨没有被索引的包含文件。我尝试了Index Rebuild / Update / Freshen / Re-resolve方法,对于这方面的一些人有用,但我的问题没有运气。

此外,尝试禁用“属性”中的“启发式解析包含” - >索引。我以为我得到了一会儿然后错误又出现了。

有什么想法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

这是一个C / C ++问题,与CUDA无关。

通常人们不包括像.cu .cpp .c这样的源文件。只应包含像.h这样的头文件。

如果您需要在许多源文件中引用全局变量int x。你可以在一个源文件中定义

// main.cu
int x;
...

在头文件中声明

// main.h
extern int x;
...
引用该变量

的所有源文件中

包含此头文件

// second.cu
#include "main.h"
void foo() {
    int local=x;
}
...

// third.cu
#include "main.h"
void bar() {
    int private=x;
}
...