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

2021-07-07 06:10:43 字數 1232 閱讀 5215

我們不僅要寫高效的**,還要寫可讀性很強的**,隨著我們所開發系統的複雜性的不斷提高,這就要求我們所寫的程式具有3個特性:1、可讀性;2、可多人協作性;3、可移植性。但是,像我們這樣電子專業畢業的學生,都沒有接受過「軟體設計方**」、「作業系統原理」等課程的深入訓練,這就使我們所寫的程式與軟體專業工程師所寫的程式具有較大的差距,這些問題使得公司在程式的**維護上面臨著諸多的困難。這種窘境需要打破!

本文從「c語言程式設計規範」著手,著重講授如何書寫規範性的c語言程式**,文中所舉例項,均為知名公司所採用的c語言規範。按照本系列課程嚴格要求自己規範性編寫c語言**,可使得我們書寫的程式給人耳目一新的感覺,易於閱讀,並避免潛在的邏輯性錯誤的發生。

預編譯巨集:

a、用巨集定義表示式時,要使用完備的括號

示例:如下定義的巨集都存在一定的風險。

#define rectangle_area( a, b ) a * b

#define rectangle_area( a, b ) (a * b)

#define rectangle_area( a, b ) (a) * (b)

正確的定義應為:

#define rectangle_area( a, b ) ((a) * (b))

b、將巨集所定義的多條表示式放在大括號中

示例:下面的語句只有巨集的第一條表示式被執行。為了說明問題,for語句的書寫稍不符規範。

#define inti_rect_value( a, b )\

a = 0;\

b = 0;

for (index = 0; index < rect_total_num; index++)

inti_rect_value( rect.a, rect.b );

正確的用法應為:

#define inti_rect_value( a, b )\

for (index = 0; index < rect_total_num; index++)

c、使用巨集時,不允許引數發生變化。

示例:如下用法可能導致錯誤。

#define square( a ) ((a) * (a))

int a = 5;

int b;

b = square( a++ ); // 結果:a = 7,即執行了兩次增1。

正確的用法是:

b = square( a );

a++;              // 結果:a = 6,即只執行了一次增1。

。csdn:

C語言預編譯 巨集的整理

define null 0 define null null pointer 0 上面的重定義是相同的,但下面的重定義不同 如果多次定義時,再次定義的巨集內容是不同的,gcc會給出 name redefined 警告資訊.應該避免重新定義函式巨集,不管是在預處理命令中還是c語句中,最好對某個物件只有...

C語言的預編譯

technorati 標籤 c,預編譯,巨集,檔案替換,條件編譯 由 源 到 可執行檔案 的過程包括四個步驟 預編譯 編譯 彙編 鏈結。所以,首先就應該清楚的首要問題就是 預編譯只是對程式的文字起作用,換句話說就是,預編譯階段僅僅對源 的單詞進行變換,而不是對程式中的變數 函式等。預編譯指令的基本知...

C語言的預編譯

預編譯指令基本分類如下 類別指令 預定義符號 file line date time stdc 巨集 define 檔案包含 include 條件編譯 if elif else ifdef ifndef endif 還有一些指令,名稱和功能如下表 指令功能 空指令 undef 移除乙個空定義 err...