第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

全部開發(fā)者教程

C 語言入門教程

C 語言基礎(chǔ)教程
01 C 語言簡介 02 C 語言的程序結(jié)構(gòu) 03 C 語言的編譯 04 C 語言的標準 05 C 語言中的注釋 06 C 語言中的變量 07 C 語言中的變量類型 08 C 語言的常量 09 C 語言的輸入與輸出 10 C 語言中的 printf() 格式輸出 11 C 語言中的類型轉(zhuǎn)換 12 C 語言中的運算符 13 C 語言中的算數(shù)運算符 14 C 語言中的位運算符 15 C 語言中的邏輯運算符 16 C 語言中的三目運算符 17 C 語言中的分支結(jié)構(gòu) 18 C 語言中的多重分支 19 C 語言中的分支嵌套結(jié)構(gòu) 20 C 語言中的循環(huán)結(jié)構(gòu) 21 C 語言中的 while 循環(huán) 22 C 語言中的 do-While 循環(huán) 23 C 語言中的 for 循環(huán) 24 C 語言中的多重循環(huán)嵌套 25 循環(huán)實戰(zhàn),打印九九乘法表 26 C 語言中的break和continue 27 C 語言中的 if 語句 28 C 語言中的 switch/case 語句 29 C 語言中的函數(shù) 30 C 語言函數(shù)的定義和聲明 31 C 語言中函數(shù)的參數(shù)傳入類型 32 C 語言中的 main() 函數(shù)參數(shù) 33 make 工具 makefile 34 C 語言中的數(shù)組 35 C 語言中的多維數(shù)組 36 數(shù)組的練習 37 C 語言中的字符串 38 C 語言中的字符串函數(shù) 39 C 語言字符串練習 40 C 語言中的指針 41 C 語言中的 struct 42 C 語言中的 union 43 C 語言中的 maclloc free() 44 C 語言中的 enum 45 整體練習-學生管理系統(tǒng)

make 工具 makefile

編譯型語言在每次執(zhí)行之前都要進行編譯。這在有人眼里是優(yōu)勢,因此編譯過程中可以進行一些語法等信息的檢查,避免一些初級的錯誤。同時編譯出來的代碼可以有更好的運行速度。但是在有些人眼里這就是災難。其實不是有時候不是因為別的什么原因,而是因為你輸入的編譯命令可能長的的需要好幾行才能輸入完。中間要是修改起來簡直就是不可能。

所以,我們有了一個新的工具 make。

1. make 工具

make 工具是用來構(gòu)建 C 程序而發(fā)明的。特別是當需要依賴大量的庫文件(尤其是非標準庫文件),和需要設(shè)置一些特殊的系統(tǒng)變量環(huán)境等內(nèi)容的時候。通常情況下, make 工具都會用在比較大的項目中。但是如果在規(guī)模不大的程序中使用會更簡單,同時會讓你的程序構(gòu)建變得也更輕松。

要使用 make 工具就需要寫一個 makefile,通常情況下這個文件名就是叫 makefile。當然你可以用別的名字替代。不過這個時候你就要在執(zhí)行 make 命令的時候指定你所要執(zhí)行的 makefile 文件名。如果寫成 makefile 這個名字, make 程序會直接在當前所在的文件夾中尋找這個文件,就不用指定文件名字了。所以,建議大家就用 makefile 這個英文單詞的名字。

make 工具其實不僅僅可以應(yīng)用于 C 語言。它目前也不僅僅只是可以用在 linux 中。它也是可以跨平臺的應(yīng)用。

那么這個 makefile 文件的結(jié)構(gòu)是什么?

其實比較簡單。

目標:  依賴1, 依賴2, ……
        編譯命令

2. 使用實例

這里我們有一個程序需要構(gòu)建,而這個程序構(gòu)建過程中,會依賴另外一個程序。這個時候我們就可以方便的通過 make 工具了。

文件名:test.c

#include <stdio.h>
int add(int d, int e);

int main()
{
     int a = 2, b = 3, c;
     c = add(a, b);
     printf("a add b = %d\n", c);
     return 0;
}

上面是我們的主程序,通過調(diào)用外部的程序 add 來實現(xiàn)加法運算。這里需要注意的是我們在程序的開始 int add(int d, int e); 這一行語句是函數(shù)的原型聲明,因為函數(shù)本身是寫在另外一個函數(shù)里的。這個函數(shù)本身是不不知道有這個函數(shù)存在的。要想使用 add 這個函數(shù),就要先告知這個 main 函數(shù)。

文件名:add.c

int add(int x, int y)
{
    return x + y;
}

上面是我們實現(xiàn)加法運算的子程序。也就是被調(diào)用的那個程序。存在于另外一個程序文件中。就是一個簡單的求和返回值。

我們首先展示,直接使用命令行是應(yīng)該如何編譯這兩個文件的。

gcc test.c add.c -o test

這個看著是不長,但是我遇到過數(shù)十個依賴庫的情況。你們自己可以自行想象一下24寸顯示器屏幕全屏shell窗口一行寫不完的景象。

所以這個時候 make 工具就要出場了。

先寫一個 makefile 文件,名字就叫 makefile。

test: test.c add.c
		gcc test.c add.c -o test

運行結(jié)果:

utopia@DESKTOP:~$ make
gcc test.c add.c -o test
utopia@DESKTOP:~$ make
make: 'test' is up to date.

連續(xù)執(zhí)行兩次 make 也會有新的發(fā)現(xiàn),當再次執(zhí)行 make 時,make 文件會檢查原始代碼是不是有新的變化。

如果缺失依賴文件會怎樣?

如果是直接執(zhí)行編譯命令會有如下提示。

gcc test.c add.c -o test
gcc: error: add.c: No such file or directory
makefile:2: recipe for target 'testbuild' failed
make: *** [testbuild] Error 1

而采用 make 文件會有下面的提示。

utopia@DESKTOP:~$ make
make: *** No rule to make target 'add.c', needed by 'test'.  Stop.

這兩者有最大的區(qū)別就是 make 文件在進行大規(guī)模編譯前就會根據(jù)你所提供的依賴進行文件檢車。如果缺少了依賴的文件就會直接停止下面的編譯,節(jié)省了大量的時間。不會出現(xiàn)編譯到一半找不到文件的尷尬。

3. 小結(jié)

make 作為提高構(gòu)建程序效率的工具,廣泛應(yīng)用在程序的編譯構(gòu)建中。大家如果用一些提供源碼編譯的工具話一定會使用過 make 工具。

make 工具解決了構(gòu)建過程依賴的短缺,以及構(gòu)建命令不容易維護的難題。使得編譯程序可以變得不再那么痛苦。畢竟寫一次 makefile 文件,每次都要重新輸入超長的編譯命令來說還是很方便的。更不要說還有可能設(shè)置更為負載的系統(tǒng)變量。