我的一個問題,因爲我對C很新,是關於避免發生重複錯誤的方法。基本上,當我在Netbeans中構建項目時,如果我在項目中包含該文件並將其包含在內,則會出現該錯誤。重複的錯誤:C文件包括
定義函數static,是避免它的正確方法嗎?還有什麼其他解決方案?謝謝
我的一個問題,因爲我對C很新,是關於避免發生重複錯誤的方法。基本上,當我在Netbeans中構建項目時,如果我在項目中包含該文件並將其包含在內,則會出現該錯誤。重複的錯誤:C文件包括
定義函數static,是避免它的正確方法嗎?還有什麼其他解決方案?謝謝
正如K. Horvath所說,你不應該在另一個文件中包含一個c文件。這意味着您必須爲每個.c提供.h文件,將.c文件編譯爲目標文件,然後根據需要包含.h文件,並將所有對象與包含main()
的.c一起編譯。您仍然可以結束了重複的.H聲明,然而,這也正是包括進來警衛
#ifndef MY_HEADER
#define MY_HEADER
// all your type definitions, function prototypes, etc
#endif
WRT編譯每個.c的第一個問題,以下是GCC一個例子:你有一個具有您想要在main.c中使用的各種函數的util.c文件; util.c然後應該有一個相應的util.h你在main.c中的#include
。然後:
gcc -Wall -g -c util.c
「-Wall」 使能編譯警告
「-g」 包括調試符號
「-c」 將產生一個的.o(未鏈接的中間對象),而不是文件的法線可執行文件。
現在:
gcc -Wall -g util.o main.c
這將編譯main.c中,包括來自util.c其編譯成util.o.東西
由於您使用netbeans,這可能是理論上的 - 通常IDE會爲您做所有這些。但是,瞭解基本過程可能會使您更容易理解您的IDE;)
.c
/.cpp
文件不應包括在內。
將聲明移動到通用頭文件幷包含它。
所以我應該堅持.h文件,而不是.c文件? – Andrew
單獨的常用聲明和實際定義 - http://en.wikipedia.org/wiki/Header_file –
http://en.wikipedia.org/wiki/Include_guard – cnicutar
您對錯誤消息太含糊。什麼是重複的?包含指令?或者(更可能)您收到有關重複標識符的消息?請**總是**提供確切的錯誤信息,而不是一些經過修改的版本。 – Jens