日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

预编译头说明

發布時間:2024/4/17 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 预编译头说明 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、解決什么問題?

  C++ 編譯器是單獨,分別編譯的,每個cpp文件,進行預編譯(也就是對#include,define 等進行文本替換),生成編譯單元。編譯單元是一個自包含文件,C++編譯器對編譯單元進行編譯。考慮,頭文件A.h被多個cpp文件(比如A1.cpp,A2.cpp)包含,每個cpp文件都要進行單獨編譯,其中的A.h部分就會被多次重復第編譯,影響效率。

2、怎么解決?

  把A.h以及類似A.h這樣的頭文件,包含到stdafx.h中(當然也可以是其他文件),在stdafx.cpp中包含stdafx.h,設置stdafx.cpp文件的屬性,預編譯頭設置為 創建。對于原先包含A.h的cpp文件,刪除#include "A.h",改成包含stdafx.h,同時設置這些cpp文件(A1.cpp,A2.cpp)的屬性,預編譯頭設置為 使用。這樣的話,下次編譯A1.cpp,A2.cpp的時候,對于A.h頭文件中的那部分,就不需要編譯了,節省時間。

3、預編譯頭文件原理

  工程對預先編譯的代碼進行編譯,會生成一個pch文件(precompiled header),包含了編譯的結果。注意,可以對任何代碼生成到pch中,但是生成pch是個很耗時的操作,因此,只對那些穩定的代碼創建預編譯頭文件。

?

編譯系統說明:

例:取源程序hello.c 將其翻譯成一個可執行目標文件hello.翻譯過程分為四個階段。

1)預處理階段:預處理器根據以字符#開頭的命令,修改原始的C程序。比如#include<stdio.h> 就是將它直接插入到程序文本中。

2)編譯階段:將文本文件hello.i翻譯成文本hello.s 包含一個匯編語言程序。匯編語言為不同的語言的不同編譯器提供了通用的輸出語言。

3)匯編階段:匯編器將hello.s翻譯成機器語言指令,將指令打包成一個可重定位目標程序。

4)鏈接階段:printf函數存在于一個名為printf.o單獨編譯好的目標文件中。鏈接器負責處理這種合并。

?

轉載于:https://www.cnblogs.com/xiuxiu55/p/6767270.html

總結

以上是生活随笔為你收集整理的预编译头说明的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。