我为什么要在struct之前添加标识符?我看不出为什么,如何解决这个问题?

时间:2017-11-25 21:02:51

标签: c unix struct

这是我的.c文件中的代码: enter image description here

这是错误: enter image description here

2 个答案:

答案 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;已经扩大了。

该文件末尾的任何内容很可能是错误的原因 - 例如,在结构定义的末尾缺少一个分号。