【发布时间】:2012-12-24 10:09:17
【问题描述】:
#include <stdio.h>
#include "prique.h"
void main()
{
_pqueue *test;
queue_init(&test);
...
我不知道为什么会收到此错误。
错误:在 '{' 之前应有 '='、','、';'、'asm' 或 'attribute' 令牌|
头文件的结构是
typedef struct _pqueue
{
int size;
struct queue_node *first;
}_pqueue;
我已经正确定义了结构。我看到一些讨论,这个错误与范围有关,但不知道如何修复它。
【问题讨论】:
-
如果您分享结构可能会有所帮助。还要避免只是复制/粘贴问题标题中的错误。它不属于那里。确切的错误(显示在您的屏幕上)属于问题的正文。
-
您的
prique.h中有什么内容?您是否关闭了所有以;结尾的结构定义? -
带有前导下划线的标识符是为语言和实现保留的(结构名称可能是一个例外?)。此外,main() 应该返回 int。
-
@wildplasser:更准确地说,在标准中,以下划线和小写字母开头的标识符如果具有文件范围,则保留。
-
结构标签存在于单独的名称空间中(自 C89/ANSI、IIRC 起),但现在看来 OP 使用与 typedef 相同的结构名称,即是 - 至少 - 一个非常坏的习惯。 (就像 typedef 在大多数情况下是一个坏习惯一样)