关注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。
答案 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 强>