我是編程的初學者,我試着在linux下編譯一個c程序,其他人寫的gcc得到以下錯誤。在linux下重新定義struct GCC
cmd.h:145:錯誤:重新定義'結構統計'。
看來有人不止一次地定義了struct'stat'。但由於有很多代碼文件,我不知道如何解決它。任何人都可以提供這方面的建議。謝謝
我是編程的初學者,我試着在linux下編譯一個c程序,其他人寫的gcc得到以下錯誤。在linux下重新定義struct GCC
cmd.h:145:錯誤:重新定義'結構統計'。
看來有人不止一次地定義了struct'stat'。但由於有很多代碼文件,我不知道如何解決它。任何人都可以提供這方面的建議。謝謝
請嘗試使用grep -r "struct stat" *
來查找定義?先嚐試自己的代碼,然後檢查/usr/include
和/usr/local/include
中的定義。
我想你會嘗試定義自己的結構類型,它已經在標準頭文件中定義過。 struct stat定義在sys/stat.hsee here(包含文件統計信息),它直接包含或通過其他頭文件包含。
更好的方法是爲您的類型定義使用前綴,例如,typedef struct myprog_cmd_stat {...};。後者還將允許快速瞭解其定義的位置。
使用cc -E進行編譯,它將生成預處理器輸出。掃描出現struct stat;預處理器發出的線會告訴你定義發生在哪裏。
===編輯===
更妙的是: 編譯
#include <sys/stat.h>
struct stat {};
產生的消息
foo.c:3:8: error: redefinition of ‘struct stat’
/usr/include/bits/stat.h:43:8: note: originally defined here
正是衝突發生時如是說。我敢打賭,你會得到類似的信息,並簡單地忽略它。
如何包含定義了struct的文件? – pmod 2011-03-09 09:07:43
@ user647868如果您要徹底改變您的問題,請提出一個單獨的問題,可能會刪除舊問題,而不是編輯舊問題 - 這完全混淆了人們的錯誤,並導致錯誤答案的結果。我們喜歡有幫助,但你也需要做得很好。 – 2011-03-09 09:24:37
另外,你很快接受了一個答案。你可能想等一下,看看還有什麼其他的建議。 – 2011-03-09 09:26:41