2011-03-09 42 views
0

我是編程的初學者,我試着在linux下編譯一個c程序,其他人寫的gcc得到以下錯誤。在linux下重新定義struct GCC

cmd.h:145:錯誤:重新定義'結構統計'。

看來有人不止一次地定義了struct'stat'。但由於有很多代碼文件,我不知道如何解決它。任何人都可以提供這方面的建議。謝謝

+0

如何包含定義了struct的文件? – pmod 2011-03-09 09:07:43

+0

@ user647868如果您要徹底改變您的問題,請提出一個單獨的問題,可能會刪除舊問題,而不是編輯舊問題 - 這完全混淆了人們的錯誤,並導致錯誤答案的結果。我們喜歡有幫助,但你也需要做得很好。 – 2011-03-09 09:24:37

+0

另外,你很快接受了一個答案。你可能想等一下,看看還有什麼其他的建議。 – 2011-03-09 09:26:41

回答

0

請嘗試使用grep -r "struct stat" *來查找定義?先嚐試自己的代碼,然後檢查/usr/include/usr/local/include中的定義。

1

我建議創建一個 makefile並使用 make來編譯你的代碼。 Example

+2

回答錯誤的問題? – 2011-03-09 09:05:18

+2

@ steve-o,不,哦,OP改變了他的問題。 – fouronnes 2011-03-09 09:15:33

+2

+1因爲你不值得-1因爲OP改變了他的問題......也許只是刪除你的答案? – dcousens 2011-03-09 09:17:45

2

我想你會嘗試定義自己的結構類型,它已經在標準頭文件中定義過。 struct stat定義在sys/stat.hsee here(包含文件統計信息),它直接包含或通過其他頭文件包含。

更好的方法是爲您的類型定義使用前綴,例如,typedef struct myprog_cmd_stat {...};。後者還將允許快速瞭解其定義的位置。

0

使用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 

正是衝突發生時如是說。我敢打賭,你會得到類似的信息,並簡單地忽略它。