使用Eclipse在C中调试全局变量

时间:2013-12-11 14:49:59

标签: c eclipse global

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

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

我该如何解决这个问题?

a.h定义了队列:

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

extern Queue **queue;

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

在b.c中我定义了

Queue **queue;

作为变量并使用多个函数处理它。 我在main.c文件中使用相同的**队列。

我使用Eclipse 3.3.2 for Windows。

1 个答案:

答案 0 :(得分:0)

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

首先解决2 :在我的环境中,(一个NI编译器/调试器)当资源紧张时,调试器开始做片状事情,比如显示一个数组结构错误地作为单个结构等等。我在使用调试器几个小时后才看到这个。解决方案是关闭并重新启动环境以重置并清除所有调试器内存。我使用的所有调试器都受此类行为的影响。

寻址1 :首先,您定义结构的方式不可编译。这条线:

q_elem *root;  

需要:

struct q_elem *root;

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

//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