2014-11-06 34 views
1

我正在學C編程語言。爲了清楚地理解C中有多大項目,我在Github上瀏覽了幾個Trending C項目。這是用C:Here編寫的項目。有一件事我不明白爲什麼項目目錄中有這麼多的文件夾:bin,conf,contrib,docs,images,m4,man,notes等。我理解的唯一文件夾是src文件夾,它具有所有的頭文件和c文件。但是還有一個與源文件夾有關的疑問。每個頭文件都有一個名稱相同的C文件。我可以編譯主文件,但main.c文件如何鏈接到其他C文件。我猜其他C文件的所有功能定義&主文件正在調用它們。 main.c調用了包含所有函數原型的頭文件。這些大項目管理我現在有點困惑。請幫我理解。也在哪裏閱讀有關它,所以我可以學習這個東西。github項目在Github上編譯和安排的主要C項目

其實我想問的是:如果我有5個文件

main.c中,header.h,function1.c,function2.c,fuction3.c。我如何使用這3個函數1,2,3,3.c文件中的3個函數。

我想學習如何構建一個大項目,並在不同的文件中管理它,以及如何在GIT上安排文件。即使我創建了一個項目,我也會在同一個.c文件中寫入1000行,這是一團糟。我想學習如何管理這種清晰和項目安排。在哪裏學習這一切?

回答

2

一個我不明白的是爲什麼有這麼多的文件夾中的項目目錄:斌,CONF,contrib請,文檔,圖像, m4,man,便籤等

因爲一個軟件不僅包含源代碼。需要大量的補充材料:

  • 的文檔(在/mandocs);
  • 構建腳本(通常用於位於conf和/或m4文件夾中的實際標準Unix配置工具「autoconf」,「automake」,「M4」和「make」);
  • 如果程序有一個(/images),GUI使用的資源;

我可以編譯主文件,但如何main.c文件,與其他C文件

使用的軟件叫連接。默認情況下,很多編譯器(包括流行的GCC和Clang工具鏈)會調用系統鏈接器(除非您告訴它們它們只應該編譯但不能鏈接),這又會解析源文件之間的引用並創建最終的可執行文件。詳細瞭解C編譯過程here

我想學習如何構建一個大項目,並在不同的文件中管理它,以及在GIT上安排文件的方式。在哪裏學習這一切?

不幸的是,沒有一個地方可以收集所有的智慧。您需要使用Google,閱讀構建系統(如make)和版本控制系統(如Git等)的文檔和手冊以及教程。

但是,我找到了適合您的相關堆棧溢出問題讓你開始:How to split a C program into multiple files?

+0

這就是一個很好的答案!我會離開我的(因爲爲什麼不),但你剛剛贏得了我的讚賞:) – 4rlekin 2014-11-06 14:20:16

+0

@ 4rlekin謝謝你! :) – 2014-11-06 14:20:46

+0

偉大的幫助先生非常感謝這麼簡單的解釋@ TheParamagneticCroissant – 2014-11-06 17:25:28

1

我會把我的兩毛錢放在這裏。

關於這個源文件:
正如你可能已經知道有頭(.h),其中包含函數聲明,你需要#include這樣的文件,以便能夠使用的功能從內部文件,但如果你到裏面一探究竟其中一個頭文件你會注意到只有聲明,沒有定義。
.c文件解決了這個謎:
如果你有文件function.c與裏面的一些功能,並希望使用此功能,比方說,main.c文件,你需要創建該頭文件:function.h其中將包含該聲明(原型)功能從function.c文件。如果我記得正確,你還需要在function.c文件中的#include這個頭文件。 然後你可以#include這樣的頭文件到你的main.c文件並使用這個功能。

關於編碼組織:
組織代碼和項目管理有一些最佳實踐和方法。有時候開發人員使用的IDE也有一些組織項目的特殊方式。
只是爲了澄清:git本身並不強制任何特定組織

+0

很容易的解釋....非常感謝讓我理解的東西 – 2014-11-06 17:26:05