上海裝修做網(wǎng)站的倒閉了100%上熱門文案
文章目錄
- 1.make/Makefile的介紹
- 2.簡單編寫及使用
- 3.ACM時(shí)間
- 4.extern的復(fù)習(xí)
- 5.多文件的編譯
- 5.0復(fù)習(xí)翻譯過程
- 5.1多文件的構(gòu)成
- 5.2手動編譯
- 5.3利用Makefile
1.make/Makefile的介紹
make是一個(gè)命令 makefile是一個(gè)文件[makefile也對]
之前的學(xué)習(xí)都沒有維護(hù)項(xiàng)目結(jié)構(gòu) 當(dāng)有多個(gè).c文件 先編譯哪個(gè)后編譯哪個(gè) 自己沒管過 make/Makefile: 自動化的構(gòu)建項(xiàng)目
編寫Makefile的目的:能夠自動化的構(gòu)建項(xiàng)目 可以把我們的源代碼編譯 自動生成可執(zhí)行程序
編寫Makefile:依賴關(guān)系
(小灰灰是灰太郎的兒子 有父子關(guān)系)依賴方法
(小灰灰上大學(xué)月底給灰太狼要生活費(fèi))
2.簡單編寫及使用
利用編寫好的Makefile 可以通過make/make clean進(jìn)行生成/刪除可執(zhí)行程序
這是一個(gè)Makefile文件,用于編譯名為hello的C程序。
- 第一行指定了一個(gè)目標(biāo),即hello。
- 第二行是編譯命令,gcc hello.c -o hello,它會使用gcc編譯hello.c,并將生成的可執(zhí)行文件命名為hello。
- 第三行是一個(gè)偽目標(biāo),即clean,用于定義清除操作。
- 第四行是clean目標(biāo)下的命令,rm -f hello,它用于刪除生成的可執(zhí)行文件hello。
可以使用命令make
執(zhí)行該Makefile文件來進(jìn)行編譯和生成可執(zhí)行文件。如果需要?jiǎng)h除可執(zhí)行文件,可以使用命令make clean
。
執(zhí)行: Makefile自頂向下掃描文本 只會執(zhí)行第一對目標(biāo)文件 想要執(zhí)行特定文件需要在make后+文件名
.PHONY修飾的目標(biāo)稱為偽目標(biāo): 總是被執(zhí)行的(總是根據(jù)依賴關(guān)系去執(zhí)行依賴方法) 理解: 多次執(zhí)行make hello 會顯示: 該文件已為最新文件 而多次執(zhí)行make clean則沒有顯示
3.ACM時(shí)間
ACM時(shí)間
Access: 最近一次訪問 因?yàn)橛行┪募?jīng)常被訪問 所以這個(gè)時(shí)間經(jīng)常需要被修改 而頻繁修改存在于磁盤上的文件需要耗費(fèi)時(shí)間 所以優(yōu)化后: 當(dāng)達(dá)到一定訪問次數(shù)才會修改access
Modify: 最近一次修改文件內(nèi)容的時(shí)間 當(dāng)文件內(nèi)容增加/減少引起文件大小變化 – 文件的屬性信息也會隨之改變
Change: 最近一次修改文件屬性的時(shí)間
4.extern的復(fù)習(xí)
extern是什么
extern是C語言中的一個(gè)關(guān)鍵字,用于在源文件中聲明一個(gè)在另一個(gè)源文件中定義的變量或函數(shù)。它的作用是告訴編譯器在其他地方已經(jīng)定義了這個(gè)變量或函數(shù),避免重復(fù)定義。
1.在一個(gè)源文件中聲明一個(gè)在另一個(gè)源文件中定義的全局變量或函數(shù),以便在當(dāng)前源文件中使用它們。
2.在一個(gè)頭文件中聲明一個(gè)在另一個(gè)源文件中定義的全局變量或函數(shù),以便在多個(gè)源文件中使用它們。
例子:
// file1.c
int count; // 定義全局變量count// file2.c
extern int count; // 聲明全局變量count
file1.c定義了一個(gè)全局變量count,file2.c使用extern聲明了這個(gè)全局變量,以便在file2.c中使用它。
extern關(guān)鍵字只是一個(gè)聲明,它并不會分配內(nèi)存空間
。變量的實(shí)際定義和內(nèi)存分配必須在某個(gè)源文件中進(jìn)行
。另外,如果一個(gè)變量在多個(gè)源文件中都使用了extern聲明,那么它只能在其中一個(gè)源文件中進(jìn)行定義。
5.多文件的編譯
5.0復(fù)習(xí)翻譯過程
5.1多文件的構(gòu)成
5.2手動編譯
5.3利用Makefile