c語言多檔案編譯
假設現在有三個c原始檔:
max.c:
int max(int a,int b)
{
if(a > b){
return a;
}else{
return b;
}
}
min.c:
int min(int a,int b)
{
if(a < b){
return a;
}else{
return b;
}
}
res.c:
#include <stdio.h>
int main()
{
int a = 99;
int b = 88;
int maxVal = max(a,b);
int minVal = min(a,b);
printf("the max value is %d\nthe min value is %d\n",maxVal,minVal);
return 0;
}
1.引入原始檔的方式進行編譯
這種編譯方式是在main函式的檔案中引入其他檔案進行編譯:
res.c:
#include <stdio.h>
#include "max.c"
#include "min.c"
int main()
{
int a = 99;
int b = 88;
int maxVal = max(a,b);
int minVal = min(a,b);
printf("the max value is %d\nthe min value is %d\n",maxVal,minVal);
return 0;
}
優點是不需要對原始檔進行編譯而直接在main檔案中引入即可,且原始檔的程式碼可以看到;
缺點是每次都要對所有的原始檔進行重新編譯,比較耗時;
2.引入頭部檔案的方式進行編譯
如果在開發專案的時候,max.c和min.c是已經寫好的不必修改的檔案,那麼可以直接用gcc -c命令這兩個檔案編譯成.o二進位制檔案,然後在gcc編譯的四個階段的最後階段連結到res.c檔案中即可。
但是如果這兩個檔案是其他同事開發的,而這邊拿到的只是max.o和min.o二進位制檔案,需要檢視函式的型別和傳參的時候是難以分析二進位制檔案的,所以可以將這個兩個二進位制檔案中的函式宣告在一個.h的標頭檔案中,方便開發者使用(如果main函式中的printf的函式在stdio.h標頭檔案中宣告一樣)。
cal.h:
int max(int a,int b);
int min(int a,int b);
res.c:
#include <stdio.h>
#include "cal.h"
int main()
{
int a = 99;
int b = 88;
int maxVal = max(a,b);
int minVal = min(a,b);
printf("the max value is %d\nthe min value is %d\n",maxVal,minVal);
return 0;
}
再次編譯:
相關文章
- 【C語言】linux下多檔案編譯C語言Linux編譯
- C語言編譯工具C語言編譯
- C語言 - 條件編譯C語言編譯
- 命令列下編譯多個C/CPP檔案命令列編譯
- C語言編譯全過程C語言編譯
- Go語言專案編譯之後找不到配置檔案Go編譯
- C語言檔案操作C語言
- C語言(檔案操作)C語言
- 使用 Sublime Text 3 編譯 C 語言編譯
- C語言編譯器手機版C語言編譯
- 3- C語言編譯過程C語言編譯
- C語言編譯過程簡介C語言編譯
- windows 下編譯c檔案Windows編譯
- java開發C語言編譯器:為C語言提供API呼叫JavaC語言編譯API
- C語言(檔案加解密)C語言解密
- C語言-檔案讀寫C語言
- C語言-->(十四)結構體、巨集、編譯C語言結構體編譯
- 現代編譯原理C語言描述pdf編譯原理C語言
- 如何組織構建多檔案 C 語言程式(二)
- 如何組織構建多檔案 C 語言程式(一)
- 用c語言處理檔案C語言
- C語言 檔案IO的使用C語言
- c語言檔案操作相關C語言
- c語言拷貝檔案程式C語言
- C語言實現檔案加密C語言加密
- C語言 - 標頭檔案包含C語言
- Linux下C語言編譯的問題LinuxC語言編譯
- Android-NDK-11-C語言編譯原理AndroidC語言編譯原理
- VS2012編譯C語言編譯C語言
- 求助(請教C語言編譯問題)(轉)C語言編譯
- 【開發語言】PHP、Java、C語言的編譯執行過程PHPJavaC語言編譯
- C語言/C++讀取檔案資訊C語言C++
- C++ 預編譯標頭檔案C++編譯
- C語言檔案與目錄(五)檔案鎖C語言
- C語言判斷檔案存在和建立檔案C語言
- C語言關於多原始檔的呼叫C語言
- Go 語言編譯期斷言Go編譯
- c++進階(一)C語言條件編譯及編譯預處理階段C++C語言編譯