網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
.cpp文件運(yùn)行全過(guò)程
今天來(lái)寫一寫.cpp文件是怎么一步一步變成.exe文件的,以便更好的理解C++內(nèi)核
第一步
先用編輯器編輯好源代碼文件,也就是.cpp文件
int main() {}
然后是對(duì)該文件進(jìn)行預(yù)處理,也就是常用的三個(gè)預(yù)處理命令(此三者嚴(yán)格意義上不算是C++的語(yǔ)句):
文件包含:將該文件內(nèi)容合并到源代碼中
#include <iostream>
條件編譯:有時(shí)候一個(gè)頭文件可以引入另外一個(gè)頭文件,條件編譯防止頭文件的重復(fù)包含和編譯
#ifndef __PERSON_H__?? ??? ?// 如果這個(gè)頭文件沒(méi)有被包含
#define __PERSON_H__?? ??? ?// 就包含這個(gè)頭文件并且定義這個(gè)變量
#endif
宏定義:宏不占內(nèi)存,編譯器在編譯之前對(duì)源代碼做一些文本替換的處理
#define MAXSIZE 100
第二步
對(duì)該文件中的內(nèi)容進(jìn)行詞法、語(yǔ)法分析,然后轉(zhuǎn)化成二進(jìn)制文件(.obj&.o文件后綴)
之后把二進(jìn)制文件(.obj&.o文件后綴)和靜態(tài)鏈接庫(kù)(.lib&.a文件后綴)進(jìn)行合成為.exe文件
靜態(tài)鏈接庫(kù):可以看做是自己寫的.h文件生成的.lib(Windows)或者.a(Linux&Unix)文件
第三步
運(yùn)行.exe文件,并在過(guò)程中加載動(dòng)態(tài)鏈接庫(kù)(.dll文件后綴)
動(dòng)態(tài)鏈接庫(kù):通過(guò)外部引入的.dll配置文件,如數(shù)據(jù)庫(kù),如opencv等等
附:
靜態(tài)鏈接庫(kù)比動(dòng)態(tài)鏈接庫(kù)更耗內(nèi)存,靜態(tài)鏈接庫(kù)是由多個(gè)文件組成的,運(yùn)行過(guò)程中,分別在內(nèi)存中開(kāi)辟不同的內(nèi)存空間;而動(dòng)態(tài)內(nèi)存都只在一塊內(nèi)存中進(jìn)行存儲(chǔ)
在一個(gè)工程中如何單獨(dú)運(yùn)行一個(gè)cpp文件
在我們使用visual studio 2019的時(shí)候,一個(gè)工程下面會(huì)包含很多源文件(.cpp),如何單獨(dú)運(yùn)行其中一個(gè),我這里有兩種方式:
第一種是禁用其它的.cpp
- 第一步:在.cpp文件右擊選擇屬性
- 第二步:在從生成中排除選擇是
- 第三步:點(diǎn)擊確認(rèn)
將要除運(yùn)行外的其它.cpp文件禁用。
第二種是注釋
將除運(yùn)行外的其它.cpp文件中的main()函數(shù)注釋掉,這樣就可以只運(yùn)行一個(gè).cpp文件。
這兩種方式僅針對(duì)于剛剛開(kāi)始學(xué)習(xí)C++的人。
總結(jié)
原文鏈接:https://lhcpp.blog.csdn.net/article/details/113853541
- 上一篇:沒(méi)有了
- 下一篇:沒(méi)有了
相關(guān)推薦
- 2022-09-13 Nginx如何限制IP訪問(wèn)只允許特定域名訪問(wèn)_nginx
- 2022-06-23 Python基于鏈接表實(shí)現(xiàn)無(wú)向圖最短路徑搜索_python
- 2022-04-21 C語(yǔ)言中結(jié)構(gòu)體實(shí)例解析_C 語(yǔ)言
- 2023-08-01 v-model 和 .sync 深度解讀
- 2023-03-22 C++類中const修飾的成員函數(shù)及日期類小練習(xí)_C 語(yǔ)言
- 2022-06-18 android?ScrollView實(shí)現(xiàn)水平滑動(dòng)回彈_Android
- 2022-08-02 Android開(kāi)發(fā)雙向滑動(dòng)選擇器范圍SeekBar實(shí)現(xiàn)_Android
- 2022-04-07 你知道怎么基于?React?封裝一個(gè)組件嗎_React
- 欄目分類
-
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支