结构范围

时间:2012-12-24 10:09:17

标签: c scope structure

#include <stdio.h>
#include "prique.h"

void main()
{
    _pqueue *test;
    queue_init(&test);
    ...

我不知道为什么会收到此错误。

  

错误:在'{'之前预期'=',',',';','asm'或'属性'   令牌|

头文件中的结构是

typedef struct _pqueue
{
    int size;
    struct queue_node *first;
}_pqueue;

我已正确定义了结构。我看到一些讨论,这个错误与范围有关,但无法知道如何解决它。

3 个答案:

答案 0 :(得分:0)

不确定这是否是问题,但有些编译器无法识别void main(),所以:

int main()

否则它可能是prique.h模块中的内容......

另外,如果您的queue_node以相同的方式定义(typedef struct queue_node {...} queue_node),那么您可能不需要struct关键字:

typedef struct _pqueue
{
    int size;
    queue_node *first;
} _pqueue;

答案 1 :(得分:0)

您必须知道您也可以编译* .h文件。这样做:

gcc -Wall prique.h

确保您的头文件声明都正确。

答案 2 :(得分:0)

我猜queue_nodepqueue相同。如果是这样的话 那么这应该解决问题。如果没有,则可能未在包含文件中定义queue_node

以下代码可能就是您想要的。

typedef struct pqueue {
    int size;
    struct pqueue *first;
} pqueue_t;

void
main()
{
    pqueue_t *test;

}