C 鞏固與知新 標頭檔案保護符

2021-09-02 12:39:06 字數 1067 閱讀 2988

首先,我非常激動,又來了iteye論壇。看了看自己原來寫的幾篇部落格,那都是2023年的事了,並沒有堅持下來,當然,也給自己找了個藉口,學習太忙了。現在稍微清閒一點,我覺得還是有寫部落格的必要了。

c++早在大一的時候就學過,前陣子為了考試也看過些許時間,但是,總的來說還是走馬觀花,現在重新研讀《c++ primer》一書,覺得獲益匪淺,鞏固中有知新。那麼下面我就來**下幾個有意思的地方吧:

1.標頭檔案保護符

[b][b]#ifndef salesitem_h

#define salesitem_h

······//此處為內容

#endif[/b][/b] 終於知道這個是什麼意思了: 條件指示#ifndef salesitem_h測試 salesitem_h 預處理器變數是否未定義。如果 salesitem_h 未定義,那麼 #ifndef 測試成功,跟在 #ifndef 後面的所有行都被執行,直到發現#endif。相反,如果 salesitem_h 已定義,那麼 #ifndef 指示測試為假,該指示和 #endif 指示間的**都被忽略。

為了保證標頭檔案在給定的原始檔中只處理過一次,我們首先檢測 #ifndef。第一次處理標頭檔案時,測試會成功,因為 salesitem_h 還未定義。下一條語句定義了 salesitem_h。那樣的話,如果我們編譯的檔案恰好又一次包含了該標頭檔案。#ifndef 指示會發現salesitem_h 已經定義,並且忽略該標頭檔案的剩餘部分。

這樣就可以很好的避免標頭檔案以及原始檔變數的重複定義問題了

擴充套件:通過預處理器進行程式除錯

程式設計師在工作期間,需要進行大量的程式除錯,這時候就需要乙個簡便快捷的方法(除錯時可用,除錯成功後可以一併去除)來除錯程式。通過預處理器進行程式除錯的方法如下:

[b]int main()

[/b]如上述程式,顧名思義,ndebug若沒有定義則執行**區,如果定義了ndebug則忽略包含的**,所以在除錯階段,程式可以不定義ndebug,在程式除錯成功將上交給客戶時,可以加上nedbug定義以忽略除錯部分,這是不是很方便呢!當然nedbug是乙個特殊變數,大多數編譯器都提供定義該變數的命令列選項:

$cc -dndebug main.c

(待續)

C 標頭檔案保護符

在看 的時候經常會碰到 ifndef endif這樣的指令,這個的作用是標頭檔案保護符,用於防止同一標頭檔案的多次包含 預處理變數有兩種狀態 已定義和未定義 define 命令使得某一預處理變數變為已定義 ifdef 命令當且僅當變數已定義時成真 ifndef命令當且僅當未定義時成真 若檢查結果為真...

標頭檔案保護符和 pragma once

if defined afx h a06facfb de47 4bcd abb3 3ae66c6d9765 included define afx a06facfb de47 4bcd abb3 3ae66c6d9765 included if msc ver 1000 pragma once en...

C 標頭檔案與C標頭檔案

include 設定插入點 include 字元處理 include 定義錯誤碼 include 浮點數處理 include 檔案輸入 輸出 include 引數化輸入 輸出 include 資料流輸入 輸出 include 定義各種資料型別最值常量 include 定義本地化函式 include ...