自考網
 自考動態  報考指南  考試政策  復習指導  課程設置  自考試題  自考就業  考生故事  助學單位  自考論壇 
 公共課: 真題|模擬題|筆記串講  經濟類: 真題|模擬題|筆記串講  法學類: 真題|模擬題|筆記串講  文學類真題|模擬題|筆記串講  高校招生  網絡課堂

高級語言程序設計知識點總結九

作者:   發布時間:2009-05-18 18:07:55  來源:
  • 文章正文
  • 資料下載
  • 自考圈
  • 論壇
 9.3  條件編譯

  條件編譯是指在編譯一個源程序文件時,其中部分代碼段能根據條件成立與否有選擇地被編譯。即編譯程序只編譯沒有條件或條件成立的代碼段,而不編譯不滿足條件的代碼段。

  條件編譯為組裝與環境有關的大程序提供有力的支持,能提高程序的可移植性和可維護性。通常在研制程序系統時,設計者將所有與環境有關的內容編寫成獨立的程序段,并將它們配上相應的條件編譯命令。因環境不同等原因,只要設定相應條件,就能組裝出適應環境要求的新程序。

  條件編譯命令主要有三種相似的形式。

  (1) #if     表達式

  程序段1

  # else

  程序段2

  # endif

  其中表達式為常量表達式,其意義是當指定的表達式值為非零時,程序段1參與編譯,程序段2不參與編譯;否則,反之。

  這種形式的條件編譯命令使預處理程序能根據給定的條件確定哪個程序段參與編譯,哪個程序段不參與編譯。

  在上述一般形式中,當程序段2不出現時,也可簡寫為

  #if    表達式

  程序段

  #   endif

  條件編譯與if語句有重要區別:條件編譯是在預處理時判定的,不產生判定代碼,其中一個不滿足條件的程序段不參與編譯,不會產生代碼;且語句是在運行時判定的,且編譯產生判

  定代碼和兩個分支程序段的代碼。因此,條件編譯可減少目標程序長度,能提高程序執行速度。但條件編譯只能測試常值或常量表達式,而且語句能對表達式作動態測試。

  條件編譯預處理命令也可呈嵌套結構。特別是為了便于描述# else后的程序段又是條件編譯情況,引人須處理命令符# elif.它的意思就是# else #if.所以條件編譯須處理命令更一般的形式為

  # if   表達式 1

  程序段1

  # elif 表達式 2

  程序段2

  # elif 表達式 n

  程序段n

  # else

  程序段 n+l

  # endif

  (2) # ifdef   標識符

  程序段1

  # else

  程序段2

  # endif

  其中標識符是一個宏名,上述意義是當宏名已被定義,則程序段里參與編譯,程序段2不參與編譯;否則,反之。這里的程序段可以是任何C代碼行,也可以包含預處理命令行。其中的標識符只要求已定義與否,與標識符被定義成什么是無關的。如標識符只用于這個目的,常用以下形式的宏定義來定義這類標識符:

  # define 標識符

  即標識符之后為空,直接以換行結束該宏定義命令。

  在上述一般形式中,如果程序段2為空,則可簡寫成如下一般形式:

  # ifdef 標識符

  程序段

  # endif

  條件編譯主要作用是能提高程序的通用性,應用于不同的計算機系統編譯不同的源程序段。條件編譯另一種應用是在程序中插入調試狀態下輸出中間結果的代碼。如:

  # ifdef DEBUG

  printf(“a=%d, b=%d \n”, a, b);

  # endif

  程序在調試狀態下與包含宏定義命令

  # define BEBUG

  的頭文件一起編譯;在要獲得最終目標程序時,不與包含該宏定義命令的頭文件一起編譯。這樣,在調試通過后,不必再修改程序,已獲得了正確的最終程序。為了日后程序維護,將調試時使用的程序代碼留在源程序中是專業程序員習慣采用的方法。因為這些代碼的存在不影響最終目標碼,但有助于日后修改程序時的調試需要。

  (3) # ifndef 標識符

  程序段1

  # else

  程序段2

  # endif

熱門資料下載:
<
自考最新熱貼:
【責任編輯:育路編輯  糾錯
【育路網版權與免責聲明】  
    ① 凡本網注明稿件來源為"原創"的所有文字、圖片和音視頻稿件,版權均屬本網所有。任何媒體、網站或個人轉載、鏈接、轉貼或以其他方式復制發表時必須注明"稿件來源:育路網",違者本網將依法追究責任;
    ② 本網部分稿件來源于網絡,任何單位或個人認為育路網發布的內容可能涉嫌侵犯其合法權益,應該及時向育路網書面反饋,并提供身份證明、權屬證明及詳細侵權情況證明,育路網在收到上述法律文件后,將會盡快移除被控侵權內容。
自考報名咨詢電話:010-51291357 51291557
熱點專題
 
 自考熱點關注
                        MORE>>
學員報名服務中心: 北京北三環西路32號恒潤中心18層1803室(交通位置圖
咨詢電話:北京- 010-51268840/41 傳真:010-51418040 上海- 021-51567016/17
育路網-中國新銳教育社區: 北京站 | 上海站 | 鄭州站| 天津站
本站法律顧問:邱清榮律師
1999-2010 育路教育版權所有| 京ICP證100429號
亚洲中国久久精品无码,国产大屁股视频免费区,一区二区三区国产亚洲综合,国产AV无码专区毛片
亚洲免费偷窥视频 | 制服丝袜国产一区二区 | 亚洲综合在线精品女同 | 亚洲一级一在线观看 | 亚洲欧美精品在线看 | 亚洲美女在线一区 |