2017-11-25 370 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」已經擴大。

該文件末尾的內容很可能是導致錯誤的原因 - 例如,在結構定義結尾處缺少分號。

相關問題