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語言編譯
- Go語言專案編譯之後找不到配置檔案Go編譯
- 使用 Sublime Text 3 編譯 C 語言編譯
- 3- C語言編譯過程C語言編譯
- C語言編譯器手機版C語言編譯
- C語言-檔案讀寫C語言
- 如何組織構建多檔案 C 語言程式(二)
- 如何組織構建多檔案 C 語言程式(一)
- Linux下C語言編譯的問題LinuxC語言編譯
- 現代編譯原理C語言描述pdf編譯原理C語言
- C語言-->(十四)結構體、巨集、編譯C語言結構體編譯
- Android-NDK-11-C語言編譯原理AndroidC語言編譯原理
- 如何配置vscode外掛code runner編譯多個*.c檔案VSCode編譯
- C語言實現檔案加密C語言加密
- 用c語言處理檔案C語言
- C語言 - 標頭檔案包含C語言
- C語言判斷檔案存在和建立檔案C語言
- Notepad++編譯和執行C語言 (GCC)編譯C語言GC
- 【開發語言】PHP、Java、C語言的編譯執行過程PHPJavaC語言編譯
- C語言關於多原始檔的呼叫C語言
- C語言的編譯連結執行過程C語言編譯
- C語言編譯和連結過程簡介C語言編譯
- 源語言、目標語言、翻譯器、編譯器、直譯器編譯
- 編譯型語言與解釋型語言編譯
- 編譯warp,d語言寫的c/c++前處理器.編譯C++
- C語言程式碼區錯誤以及編譯過程C語言編譯
- C語言編譯器開發之旅(二):解析器C語言編譯
- 淺談,C語言編譯原理的個人見解C語言編譯原理
- C編譯: 動態連線庫 (.so檔案)編譯
- 【易語言】編輯框讀取txt檔案
- 解釋型語言、編譯型語言 區別編譯
- C語言關於標頭檔案的使用C語言
- 小C語言--詞法分析程式(編譯原理實驗一)C語言詞法分析編譯原理
- Go語言交叉編譯工具goxGo編譯
- go語言編譯過程概述Go編譯
- Python 既是解釋型語言,也是編譯型語言Python編譯
- 用 C 語言編寫多程式 Web 伺服器【粗暴版】Web伺服器