預編譯 清爽的舉例

2021-10-03 07:41:54 字數 938 閱讀 5534

預編譯可以防止重複引用或者重複定義

有 #ifndef 和 #if

另一種就是 #pragma once,在檔案第一行加上即可,例如vs2017在新建標頭檔案後都自帶此句

#ifndef 假(未編譯)

執行內容

#endif

#ifndef 真(已編譯)

不執行內容

#endif

#if 真

執行內容

#endif

#if 假

不執行內容

#endif

#ifndef 給標頭檔案起個名name

#define name

/*標頭檔案內容*/

#endif

舉例:乙個叫 fun.h 的標頭檔案,被 a 檔案和 b 檔案同時引用,那麼這個 fun.h 這麼寫

/*如果 fun 已經存在(已編譯),就跳過 ,否則編譯*/

#ifndef fun

#define fun

void

hello()

#endif

其實它們裡面還可以包含若干個 #if 或者 #ifndef 結構

例如上面的 fun.h 標頭檔案:

/*如果 fun 已經存在(已編譯),就跳過 ,否則編譯*/

#ifndef fun

#define fun

void

hello()

/*如果 n 已經存在,就定義 m ,否則跳過*/

#if n

#define m 5

#endif

//#if的

#endif

//#ifndef的

JS預編譯 函式預編譯和全域性預編譯

預編譯發生在函式執行前一步 建立ao物件 執行期上下文 找形參和變數宣告,將變數和形參名作為ao 屬性名,值為undefined 將實參值和形參統一 在函式體裡面找函式宣告,值賦予函式體 結果 預編譯過程 函式馬上要執行,但是還沒執行 首先建立ao物件,也就是函式它產生的儲存空間庫 ao,b und...

mysql 預編譯的好處 MySQL的預編譯功能

1 預編譯的好處 大家平時都使用過jdbc中的preparedstatement介面,它有預編譯功能。什麼是預編譯功能呢?它有什麼好處呢?當客戶傳送一條sql語句給伺服器後,伺服器總是需要校驗sql語句的語法格式是否正確,然後把sql語句編譯成可執行的函式,最後才是執行sql語句。其中校驗語法,和編...

預編譯與編譯

一c c 源 從最初的文字變為可執行檔案主要進行三大步 預編譯階段 主要是編譯器執行 文字處理工作,並不會進行語法檢查 主要執行三大類預編譯命令 巨集定義 文字替換功能,將使用了巨集的地方採取巨集定義方式直接展開 條件編譯 文字剪下功能,根據設定的條件選擇性刪除一些 片段 包含檔案 文字插入功能 i...