gpt4 book ai didi

c - Nsight Eclipse 5.5 标识符未定义

转载 作者:行者123 更新时间:2023-11-30 15:45:40 25 4
gpt4 key购买 nike

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

__device__ __constant__ unsigned int x[1];

#include "second.cu"

... some code...

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

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

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

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

我对 Eclipse 总体来说是个新手,发现一些关于 CDT 的提示,包括未对包含文件建立索引。我尝试了索引重建/更新/刷新/重新解析方法,该方法在这方面对某些人有效,但没有解决我的问题。

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

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

最佳答案

这是一个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;
}
...

关于c - Nsight Eclipse 5.5 标识符未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18926745/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com