C 程式設計規範之16 避免使用巨集

2021-06-19 15:14:02 字數 663 閱讀 8119

摘要:

巨集是c和c++語言的抽象設施中最生硬的工具,它是披著函式外衣的飢餓的狼,很難馴服,它會我行我素地遊走於各處。要避免使用巨集。

這一點在effective c++中也進行了解釋。c++的巨集的主要問題在於,他們表面上看起來很好,而實際上做的卻是另一回事。巨集會忽略作用域,忽略型別系統,忽略所有其他的語言特性和規則,而且會劫持它為檔案其餘部分所定義的符號。巨集呼叫看上去很像符號或者函式呼叫,但實際上並非如此。巨集不太「衛生」,也就是說,它會根據自己所使用時所處的環境引人注目而且令人驚訝地展開為各種東西。巨集需要進行文字替換,因此編寫遠距離也正確的巨集接近於一種魔法,而精通這種魔法既無意義也無趣。

即使在極少情況下,有正當理由編寫巨集,也絕不要考慮編寫乙個以常見詞或者縮略詞為名字的巨集。盡可能快地消除巨集的定義,總是給他們取很明顯的、大寫的、很難看的名字,並且不要放在標頭檔案中。

例外情況:

1.      巨集仍然是幾個重要任務的唯一解決方案,比如#include保護符,條件編譯中的#ifdef和#if _defined,以及assert的實現。

2.      在條件編譯中,要避免在**中到處雜亂地插入#ifdef.相反,應該對**進行組織,利用巨集來驅動乙個公共介面的多個實現,然後始終使用該介面。

3.如果不想到處複製和貼上**段,那麼可以使用巨集。

C語言的程式設計規範 使用巨集代表邏輯常量

錯誤寫法 if num 0 state 1 program code 正確用法 define send faild 0 define send ok 1 if send ok num state 1 program code 以上 編寫有兩點需要注意 1 在編寫 時盡量少用數字代替邏輯常量,可用有意...

C語言程式設計規範5 預編譯巨集

我們不僅要寫高效的 還要寫可讀性很強的 隨著我們所開發系統的複雜性的不斷提高,這就要求我們所寫的程式具有3個特性 1 可讀性 2 可多人協作性 3 可移植性。但是,像我們這樣電子專業畢業的學生,都沒有接受過 軟體設計方 作業系統原理 等課程的深入訓練,這就使我們所寫的程式與軟體專業工程師所寫的程式具...

C 程式設計規範之15 積極使用const

摘要 const是我們的朋友 不變的值更易於理解 跟蹤和分析,所以應該盡可能地使用常量代替變數,定義值的時候,應該把const作為預設的選項,常量很安全,在編譯時會對其進行型別檢查,而且它與c 的型別系統已渾然一體。不要強制轉換const的型別,除非要呼叫常量不正確的函式。常量能夠簡化 因為只需檢視...