2016-01-13 26 views
-1

我現在在C中執行代碼,問題在於它非常大。我一直在做一些關於如何分離這些代碼的研究,而更吸引人的解決方案是嘗試將一些泛型函數放在頭文件中,而不是將它們放在我的.c代碼的開頭。如何在不同的文件中分割C代碼

問題出現在我閱讀這個頭文件時,我發現它們被用來定義MACROS。我開始閱讀它,我看到的是對變量的奇怪定義(我的意思很奇怪,因爲我通常不會在.c文件中定義這種變量)。

在我弄髒手之前如何做到這一點的想法?

+0

這是一個很好的和廣泛討論的話題。查看編譯目標代碼,然後鏈接多個目標文件以使用Makefile生成可執行文件。 –

+0

謝謝! @DavidHoelzer我會繼續研究那個,然後 – xrr

+0

你能提供一個這樣的「奇怪」宏的例子嗎? – Georg

回答

2

只要我明白你的問題,你正在爲你的項目做一個頭文件,對不對?如果是這種情況,也許你指的是#ifndef,#endif等等。這些是由預處理器執行的命令。你應該給它一個閱讀。完成標題後,將其保存爲.h擴展名。此外,包括你的頭的時候,這必須是在.c文件的同一文件夾,你必須把它列入這樣的:

#include "myHeader.h" 

在你只需要寫下原型的函數的頭。然後創建一個.c文件myHeader.c並執行實際的功能。請記住在兩個.c文件中包含您的標題。

要編譯它使用以下命令:

gcc -c myFile.c -o myFile.o 
gcc -c myHeader.c -o myHeader.o 

然後,你要的對象鏈接和你做:

gcc myFile.o myHeader.o -o filename 
+1

你說我在頭文件(myHeader.h)中編寫了一個原型,然後執行我在(myHeader.c)文件中原型化的函數,以便在myFile.c中使用它。出現了兩個問題,「原型myHeader.h和myHeader.c中的代碼有什麼區別,爲什麼我不能將所有內容都放在頭文件中,並在myFile.c程序中簡單地說#include」myHeader.h「?謝謝!! – xrr

+0

看看http://stackoverflow.com/questions/20180734/are-function-prototypes-needed-in-header-files和http://programmers.stackexchange.com/questions/167723/what-應該和什麼應該在頭文件 –

+0

謝謝我會去的! – xrr