第 1 頁:9.1 宏定義 |
第 3 頁:9.2 文件包含 |
第 4 頁:9.3 條件編譯 |
第 6 頁:9.4 帶參數(shù)的主函數(shù) |
(2) # ifdef 標識符
程序段1
# else
程序段2
# endif
其中標識符是一個宏名,上述意義是當宏名已被定義,則程序段里參與編譯,程序段2不參與編譯;否則,反之。這里的程序段可以是任何C代碼行,也可以包含預處理命令行。其中的標識符只要求已定義與否,與標識符被定義成什么是無關(guān)的。如標識符只用于這個目的,常用以下形式的宏定義來定義這類標識符:
# define 標識符
即標識符之后為空,直接以換行結(jié)束該宏定義命令。
在上述一般形式中,如果程序段2為空,則可簡寫成如下一般形式:
# ifdef 標識符
程序段
# endif
條件編譯主要作用是能提高程序的通用性,應用于不同的計算機系統(tǒng)編譯不同的源程序段。條件編譯另一種應用是在程序中插入調(diào)試狀態(tài)下輸出中間結(jié)果的代碼。如:
# ifdef DEBUG
printf(“a=%d, b=%d \n”, a, b);
# endif
程序在調(diào)試狀態(tài)下與包含宏定義命令
# define BEBUG
的頭文件一起編譯;在要獲得最終目標程序時,不與包含該宏定義命令的頭文件一起編譯。這樣,在調(diào)試通過后,不必再修改程序,已獲得了正確的最終程序。為了日后程序維護,將調(diào)試時使用的程序代碼留在源程序中是專業(yè)程序員習慣采用的方法。因為這些代碼的存在不影響最終目標碼,但有助于日后修改程序時的調(diào)試需要。
(3) # ifndef 標識符
程序段1
# else
程序段2
# endif
這種條件編譯形式與前面介紹的形式的唯一差異是第一行的ifdef改為ifndef。其意義是當標識符末被定義時,程序段1參與編譯,程序段2不參與編譯;否則,反之。在上述形式中,當程序段2不出現(xiàn)時,可簡寫成:
# infdef 標識符
程序段
# endif
相關(guān)推薦:推薦:2010年計算機軟件水平考試必備完美攻略北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |