2017-11-25 371 views
-5

这是在我的.c文件中的代码: enter image description here为什么要在struct之前添加标识符?我看不出为什么,如何解决这个问题?

这是错误: enter image description here

+0

请张贴您的代码。 –

+0

如果你在这里发帖,你应该至少发布代码,并给出关于当前代码的问题和错误的确切描述。 –

+2

实际的问题出现在'list.h'里面,或者出现在你显示的片段上面。我们需要看到_complete program_,作为文本,否则我们将无法为您提供帮助。请阅读并按照https://stackoverflow.com/help/mcve上的说明进行操作。 – zwol

回答

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中,要找到“正好在该行之前”的代码,您可能必须查看过去或进入预处理器指令。在您的代码段

#include "list.h" 
#define true 1 
#define false 0 
struct NODE *head; 

当编译器解析struct NODE ...,该#define指令是不存在了,而#include "list.h"已被替换的文件list.h的内容。所以,可能是缺少分号或list.h内的任何内容。

没有看到您的完整程序,我不能更具体。

+0

感谢您的帮助!我明白你的意思! –

1

编译器会发出错误的它看到预处理的代码,所以你必须考虑到,代码如下所示后附带的“list.h”已经扩大。

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

相关问题