版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、C+程序生成過程,高嵩,程序生成的三個(gè)步驟,編譯預(yù)處理 #include文件引入,宏展開,預(yù)編譯指令處理,模板展開 分別編譯 每個(gè)編譯單位(經(jīng)過預(yù)處理的文件)獨(dú)立的進(jìn)行編譯 鏈接 保證每個(gè)編譯單位中符號(hào)意義的一致,編譯預(yù)處理,純文本操作,從源文件到編譯單元,頭文件,編譯器不區(qū)分頭文件與普通程序文件,只是提供了#include預(yù)編譯指令 頭文件通過#include預(yù)編譯指令引入 #include ”headFile.h” 使用頭文件的全文替換#include所在行 STL頭文件使用#include的形式,xxxx是否是一個(gè)文件由實(shí)現(xiàn)定義 頭文件保護(hù) 經(jīng)典的#ifndef #pragma once
2、 (實(shí)現(xiàn)定義,vc/gcc/icc均支持),宏與模板,#define 簡(jiǎn)單的替換,盡量避免使用 模板也是宏的一種,在預(yù)處理階段展開 使用宏與模板時(shí),宏與模板的全部信息必須位于當(dāng)前文件中(單次掃描編譯),編譯,單次掃描編譯器從編譯單元生成目標(biāo)碼文件,單次掃描編譯,編譯器每次只處理一個(gè)文件,每個(gè)文件只處理一次。編譯一個(gè)文件時(shí)不能獲得其他文件的信息 若需要使用其他編譯單元【定義】的符號(hào),必須在本編譯單元中【聲明】,定義與聲明,一般來說,實(shí)際分配空間的就是定義,否則就是聲明 類?模板?,頭文件的注意事項(xiàng),可以有 一般只包含各類聲明 類與模板可以在頭文件中定義 單一定義規(guī)則(One-Definition
3、 Rule, ODR) 可以包含const常量/inline函數(shù)的定義 不能有 絕不能有數(shù)據(jù)或函數(shù)的定義 不應(yīng)包含using操作 不應(yīng)包含#define ,編譯工作,為當(dāng)前編譯單元中定義的數(shù)據(jù)分配地址空間 將當(dāng)前編譯單元中的函數(shù)轉(zhuǎn)為機(jī)器碼,外部符號(hào)的地址會(huì)暫時(shí)空出來等待鏈接時(shí)處理 產(chǎn)生三個(gè)表,與鏈接相關(guān)的三個(gè)表,未解決符號(hào)表(unresolved symbol table) 導(dǎo)出符號(hào)表(export symbol table) 地址重定向表(address redirect table),鏈接,將各個(gè)編譯單元目標(biāo)代碼組織起來,鏈接原理,在所有編譯單元中,每個(gè)符號(hào)必須恰好只【定義】一次(ODR標(biāo)
4、準(zhǔn)的類與模板定義除外),可以【聲明】多次。 鏈接即確定不同編譯單元中符號(hào)的引用關(guān)系,確定具體地址,并計(jì)算偏移量,外部鏈接與內(nèi)部鏈接,一個(gè)符號(hào)若可以在其他編譯單元中使用,稱為具有【外部鏈接】,否則稱為【內(nèi)部鏈接】 const數(shù)據(jù)/inline函數(shù)具有內(nèi)部鏈接(具體參考標(biāo)準(zhǔn)與具體實(shí)現(xiàn)) 外部鏈接實(shí)際就是將符號(hào)加入導(dǎo)出符號(hào)表 可以使用extern強(qiáng)制const數(shù)據(jù)外部鏈接,鏈接步驟,確定各個(gè)目標(biāo)文件在最終可執(zhí)行文件里的位置 對(duì)目標(biāo)文件中記錄的符號(hào)地址進(jìn)行重定向 查找導(dǎo)出符號(hào)表,在未解決符號(hào)表記錄的所有位置上填寫實(shí)際地址 將所有目標(biāo)文件寫到最終可執(zhí)行文件的各個(gè)位置上,常見錯(cuò)誤,無法解析的外部符號(hào)(un
5、resolved external link) 符號(hào)重定義(duplicated external symbols),非法的例子,/ file1.cpp int a; int b = 1; extern int c; / file2. cpp int a; extern double b; extern int c;,問題,為什么前面講頭文件中一般只包含聲明而不包含定義?,Makefile,自動(dòng)化的程序生成,Makefile是什么,自動(dòng)化的完成一個(gè)指定的目標(biāo) 多用于程序的自動(dòng)生成 自動(dòng)根據(jù)依賴關(guān)系順序執(zhí)行命令 可以自動(dòng)根據(jù)時(shí)間判斷是否需要重新執(zhí)行某步驟,Makefile的基本結(jié)構(gòu),標(biāo)簽 : 標(biāo)
6、簽1 標(biāo)簽2 命令1 命令2,一個(gè)簡(jiǎn)單的Makefile,edit:main.okbd.ocommand.odisplay.o insert.osearch.ofiles.outils.o cc-oeditmain.okbd.ocommand.odisplay.oinsert.osearch.ofiles.outils.o main.o:main.cdefs.h cc-cmain.c kbd.o:kbd.cdefs.hcommand.h cc-ckbd.c command.o:command.cdefs.hcommand.h cc-ccommand.c display.o:display.cdefs.hbuffer.h cc-cdisplay.c insert.o:insert.cdefs.hbuffer.h cc-cinsert.c search.o:search.cdefs.hbuffer.h cc-csearch.c files.o:files.cdefs.hbuffer.hcommand.h cc-cfiles.c utils.o:utils.cdefs.h cc-cutils.c clean: rmeditmain.okbd.ocommand.odisplay.oinsert.osearch.ofiles.outils.o,Debug/release模式,VC+
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 豐富多彩的建筑風(fēng)格2+風(fēng)格多樣的外國(guó)古代建筑+課件-2025-2026學(xué)年贛美版初中美術(shù)七年級(jí)下冊(cè)
- “與法同行護(hù)航青春”增強(qiáng)法律觀念主題班會(huì)課件
- 電機(jī)與電氣控制技術(shù) 課件 項(xiàng)目5-7 交流電機(jī)控制線路安裝、設(shè)計(jì)與調(diào)試 -交流電動(dòng)機(jī)變頻調(diào)速控制電路的安裝與調(diào)試
- 某著名企業(yè)商業(yè)地產(chǎn)基礎(chǔ)知識(shí)培訓(xùn)
- 《GBT 22606-2008莠去津原藥》專題研究報(bào)告
- 《GB-T 10191-2011電子設(shè)備用固定電容器 第16-1部分:空白詳細(xì)規(guī)范 金屬化聚丙烯膜介質(zhì)直流固定電容器 評(píng)定水平E和EZ》專題研究報(bào)告
- 某著名企業(yè)化妝品店戰(zhàn)略規(guī)劃方案
- 《GBT 17481-2008預(yù)混料中氯化膽堿的測(cè)定》專題研究報(bào)告
- 《GBT 21851-2008化學(xué)品 批平衡法檢測(cè) 吸附解吸附試驗(yàn)》專題研究報(bào)告
- 《GBT 16304-2008壓電陶瓷材料性能測(cè)試方法 電場(chǎng)應(yīng)變特性的測(cè)試》專題研究報(bào)告
- 2023年興業(yè)銀行貴陽(yáng)分行招聘人員筆試上岸歷年典型考題與考點(diǎn)剖析附帶答案詳解
- DZ∕T 0214-2020 礦產(chǎn)地質(zhì)勘查規(guī)范 銅、鉛、鋅、銀、鎳、鉬(正式版)
- 加油站百日攻堅(jiān)行動(dòng)實(shí)施方案
- 馬工程版《中國(guó)經(jīng)濟(jì)史》各章思考題答題要點(diǎn)及詳解
- 運(yùn)輸合同糾紛答辯狀
- 基坑開挖施工方案-自然放坡
- GB/T 36964-2018軟件工程軟件開發(fā)成本度量規(guī)范
- GB/T 27548-2011移動(dòng)式升降工作平臺(tái)安全規(guī)則、檢查、維護(hù)和操作
- 1、汽車配線、電子連接器及保護(hù)裝置
- 小學(xué)五年級(jí)那一刻我長(zhǎng)大了600字
- FZ/T 10007-2018棉及化纖純紡、混紡本色紗線檢驗(yàn)規(guī)則
評(píng)論
0/150
提交評(píng)論