我正在開始使用C編程。我目前有一個包含很多功能的大文件。我想將這些函數移動到一個單獨的文件中,以便代碼更易於閱讀。然而,我似乎無法弄清楚如何正確地包含/編譯,並且找不到我找到的任何在線教程中的示例。這裏有一個簡化的例子:如何將C函數移動到單獨的文件中?
#include <stdlib.h>
#include <stdio.h>
void func1(void) {
printf("Function 1!\n");
}
void func2(void) {
printf("Function 2!\n");
}
int main(void) {
func1();
func2();
return 0;
}
如何將C函數移動到單獨的文件中?僅供參考:我正在使用gcc。
更新:這些答案非常有幫助,謝謝。現在看來,我的簡化例子不夠好,因爲我意識到我的程序未能編譯的原因是因爲我在我的函數中使用了全局變量。
#include <stdlib.h>
#include <stdio.h>
int counter = 0;
void func1(void) {
printf("Function 1!\n");
counter++;
}
int main(void) {
func1();
return 0;
}
移動這些功能到外部文件不起作用,因爲它們需要引用這個全局變量:
#include <stdlib.h>
#include <stdio.h>
#include "functions.c"
int counter = 0;
int main(void) {
func1();
counter = 100;
return 0;
}
我怎樣才能解決這個問題得到什麼?
只需將函數定義剪切並粘貼到另一個文件中,然後使用函數聲明創建一個頭部。您需要將此頭文件包含到使用'main()'的文件中。您現在需要編譯並鏈接每個源文件,編寫諸如'gcc -o program main.c functions.c'之類的東西。 – 2013-11-01 18:26:32
請參閱:[在C中使用'.h'文件的好記錄模式是什麼?](http://stackoverflow.com/questions/256277)和[我應該在頭文件中使用'#include'嗎?]( http://stackoverflow.com/questions/1804486)獲取相關信息。 –
謝謝@JonathanLeffler – Andrew