gpt4 book ai didi

c - 使用 Eclipse 调试 C 中的全局变量

转载 作者:行者123 更新时间:2023-11-30 17:42:31 29 4
gpt4 key购买 nike

在 a.h 中,我定义了一个结构体,并使用 extern Struct *struct 在其他 .c 文件和我的 main.c 文件中使用该结构体的实例。

已关注 this guide我单击相同的图标,但得到的只是一个空窗口,其中没有列出任何变量。

如何解决这个问题?

a.h 定义队列:

typedef struct Queue
{
int size;
q_elem *root;
} Queue;

extern Queue **queue;

a.c 定义了各种函数——队列典型函数。

在公元前我定义

Queue **queue;

作为变量并使用多个函数对其进行处理。我在 main.c 文件中处理同一个 **队列。

我使用适用于 Windows 的 Eclipse 3.3.2。

最佳答案

这个问题可能有两个错误来源。 1 是您正在使用的声明类型,2 是您正在使用的调试环境。

首先解决 2:在我的环境中(National Instruments 编译器/调试器),当资源紧张时,调试器开始执行一些不稳定的操作,例如显示数组结构错误地作为单个结构等。我昨天在使用调试器几个小时后看到了这一点。解决方案是关闭并重新启动环境以重置并清除所有调试器内存。我使用过的所有调试器都会出现这种类型的行为。

解决 1:首先,定义结构的方式不可编译。即该行:

q_elem *root;  

需要:

struct q_elem *root;

仅此一项就可以解决您的问题。但您也可以尝试以稍微不同的方式创建结构实例。我还没有看到你如何使用它,但我假设你想创建一个具有外部链接的结构数组(可能是为了具有项目范围)。如果是这种情况,请尝试以下操作:

//In header file:

typedef struct QUEUE
{
int size;
struct QUEUE *root;
}QUEUE;

extern QUEUE queue[10], *pQueue;

然后:

//In .c file:

QUEUE queue[10], *pQueue;

int main(void)
{

pQueue = &queue[0];

//...

您现在有一个指向具有项目范围的 QUEUE 数组的指针。请注意,它不会分配内存来访问成员*root,对于如何执行此操作的一些指针(没有双关语), Look Here

关于c - 使用 Eclipse 调试 C 中的全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20522223/

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