答案 0 :(得分:1)
每当收到类似
的错误消息时[file]:[line]:[column]: expected [punctuation] before [keyword]
问题通常是代码正确之前编译器抱怨的行。例如,当前一个声明或语句未正确结束时,您将收到类似这样的错误:
struct THING { } // oops! forgot a semicolon on this line
struct OTHER { }; // compiler complains here, but the problem is up there
这是因为编译器不知道"在处理第二个语句的开头之前有一个问题。
在C中,为了找到代码"就在行#34;之前,您可能需要查看过去或进入预处理程序指令。在您的代码段中
#include "list.h"
#define true 1
#define false 0
struct NODE *head;
当编译器解析struct NODE ...
时,#define
指令不再存在,#include "list.h"
已被文件list.h
的内容替换。所以,可能是list.h
内缺少的分号或其他内容。
如果没有看到完整的程序,我就无法更具体。
答案 1 :(得分:1)
编译器会在预处理之后为它看到的代码发出错误,所以你必须在包含的" list.h&#之后考虑代码的内容 34;已经扩大了。
该文件末尾的任何内容很可能是错误的原因 - 例如,在结构定义的末尾缺少一个分号。