首頁考試吧論壇Exam8視線考試商城網(wǎng)絡(luò)課程模擬考試考友錄實(shí)用文檔求職招聘論文下載
2013中考
法律碩士
2013高考
MBA考試
2013考研
MPA考試
在職研
中科院
考研培訓(xùn) 自學(xué)考試 成人高考
四 六 級(jí)
GRE考試
攻碩英語
零起點(diǎn)日語
職稱英語
口譯筆譯
申碩英語
零起點(diǎn)韓語
商務(wù)英語
日語等級(jí)
GMAT考試
公共英語
職稱日語
新概念英語
專四專八
博思考試
零起點(diǎn)英語
托福考試
托業(yè)考試
零起點(diǎn)法語
雅思考試
成人英語三級(jí)
零起點(diǎn)德語
等級(jí)考試
華為認(rèn)證
水平考試
Java認(rèn)證
職稱計(jì)算機(jī) 微軟認(rèn)證 思科認(rèn)證 Oracle認(rèn)證 Linux認(rèn)證
公 務(wù) 員
導(dǎo)游考試
物 流 師
出版資格
單 證 員
報(bào) 關(guān) 員
外 銷 員
價(jià)格鑒證
網(wǎng)絡(luò)編輯
駕 駛 員
報(bào)檢員
法律顧問
管理咨詢
企業(yè)培訓(xùn)
社會(huì)工作者
銀行從業(yè)
教師資格
營養(yǎng)師
保險(xiǎn)從業(yè)
普 通 話
證券從業(yè)
跟 單 員
秘書資格
電子商務(wù)
期貨考試
國際商務(wù)
心理咨詢
營 銷 師
司法考試
國際貨運(yùn)代理人
人力資源管理師
廣告師職業(yè)水平
衛(wèi)生資格 執(zhí)業(yè)醫(yī)師 執(zhí)業(yè)藥師 執(zhí)業(yè)護(hù)士
會(huì)計(jì)從業(yè)資格
基金從業(yè)資格
統(tǒng)計(jì)從業(yè)資格
經(jīng)濟(jì)師
精算師
統(tǒng)計(jì)師
會(huì)計(jì)職稱
法律顧問
ACCA考試
注冊會(huì)計(jì)師
資產(chǎn)評(píng)估師
審計(jì)師考試
高級(jí)會(huì)計(jì)師
注冊稅務(wù)師
國際內(nèi)審師
理財(cái)規(guī)劃師
美國注冊會(huì)計(jì)師
一級(jí)建造師
安全工程師
設(shè)備監(jiān)理師
公路監(jiān)理師
公路造價(jià)師
二級(jí)建造師
招標(biāo)師考試
物業(yè)管理師
電氣工程師
建筑師考試
造價(jià)工程師
注冊測繪師
質(zhì)量工程師
巖土工程師
造價(jià)員考試
注冊計(jì)量師
環(huán)保工程師
化工工程師
咨詢工程師
結(jié)構(gòu)工程師
城市規(guī)劃師
材料員考試
監(jiān)理工程師
房地產(chǎn)估價(jià)
土地估價(jià)師
安全評(píng)價(jià)師
房地產(chǎn)經(jīng)紀(jì)人
投資項(xiàng)目管理師
環(huán)境影響評(píng)價(jià)師
土地登記代理人
繽紛校園 實(shí)用文檔 英語學(xué)習(xí) 作文大全 求職招聘 論文下載 訪談|游戲
軟件水平考試
軟件水平考試資訊
軟件水平考試試題
軟件水平考試專項(xiàng)輔導(dǎo)
軟件水平考試交流互動(dòng)
軟件水平考試交流互動(dòng)
您現(xiàn)在的位置: 考試吧 > 軟件水平考試 > 復(fù)習(xí)資料 > 程序員資料 > 正文

C語言初學(xué)者入門知識(shí)之預(yù)處理

  文件包含

  文件包含是C預(yù)處理程序的另一個(gè)重要功能。文件包含命令行的一般形式為: #include“文件名” 在前面我們已多次用此命令包含過庫函數(shù)的頭文件。例如:

  #include"stdio.h"

  #include"math.h"

  文件包含命令的功能是把指定的文件插入該命令行位置取代該命令行, 從而把指定的文件和當(dāng)前的源程序文件連成一個(gè)源文件。在程序設(shè)計(jì)中,文件包含是很有用的。 一個(gè)大的程序可以分為多個(gè)模塊,由多個(gè)程序員分別編程。 有些公用的符號(hào)常量或宏定義等可單獨(dú)組成一個(gè)文件, 在其它文件的開頭用包含命令包含該文件即可使用。這樣,可避免在每個(gè)文件開頭都去書寫那些公用量, 從而節(jié)省時(shí)間,并減少出錯(cuò)。

  對(duì)文件包含命令還要說明以下幾點(diǎn):

  1. 包含命令中的文件名可以用雙引號(hào)括起來,也可以用尖括號(hào)括起來。例如以下寫法都是允許的: #include"stdio.h" #include 但是這兩種形式是有區(qū)別的:使用尖括號(hào)表示在包含文件目錄中去查找(包含目錄是由用戶在設(shè)置環(huán)境時(shí)設(shè)置的), 而不在源文件目錄去查找; 使用雙引號(hào)則表示首先在當(dāng)前的源文件目錄中查找,若未找到才到包含目錄中去查找。 用戶編程時(shí)可根據(jù)自己文件所在的目錄來選擇某一種命令形式。

  2. 一個(gè)include命令只能指定一個(gè)被包含文件, 若有多個(gè)文件要包含,則需用多個(gè)include命令。

  3. 文件包含允許嵌套,即在一個(gè)被包含的文件中又可以包含另一個(gè)文件。

  條件編譯

  預(yù)處理程序提供了條件編譯的功能。 可以按不同的條件去編譯不同的程序部分,因而產(chǎn)生不同的目標(biāo)代碼文件。 這對(duì)于程序的移植和調(diào)試是很有用的。 條件編譯有三種形式,下面分別介紹:

  1. 第一種形式:

  #ifdef 標(biāo)識(shí)符

  程序段1

  #else

  程序段2

  #endif

  它的功能是,如果標(biāo)識(shí)符已被 #define命令定義過則對(duì)程序段1進(jìn)行編譯;否則對(duì)程序段2進(jìn)行編譯。如果沒有程序段2(它為空),本格式中的#else可以沒有, 即可以寫為:

  #ifdef 標(biāo)識(shí)符

  程序段 #endif

  #define NUM ok

  main(){

  struct stu

  {

  int num;

  char *name;

  char sex;

  float score;

  } *ps;

  ps=(struct stu*)malloc(sizeof(struct stu));

  ps->num=102;

  ps->name="Zhang ping";

  ps->sex='M';

  ps->score=62.5;

  #ifdef NUM

  printf("Number=%d\nScore=%f\n",ps->num,ps->score);

  #else

  printf("Name=%s\nSex=%c\n",ps->name,ps->sex);

  #endif

  free(ps);

  }

  由于在程序的第16行插入了條件編譯預(yù)處理命令, 因此要根據(jù)NUM是否被定義過來決定編譯那一個(gè)printf語句。而在程序的第一行已對(duì)NUM作過宏定義,因此應(yīng)對(duì)第一個(gè)printf語句作編譯故運(yùn)行結(jié)果是輸出了學(xué)號(hào)和成績。在程序的第一行宏定義中,定義NUM表示字符串OK,其實(shí)也可以為任何字符串,甚至不給出任何字符串,寫為: #define NUM 也具有同樣的意義。 只有取消程序的第一行才會(huì)去編譯第二個(gè)printf語句。讀者可上機(jī)試作。

  2. 第二種形式:

  #ifndef 標(biāo)識(shí)符

  程序段1

  #else

  程序段2

  #endif

  與第一種形式的區(qū)別是將“ifdef”改為“ifndef”。它的功能是,如果標(biāo)識(shí)符未被#define命令定義過則對(duì)程序段1進(jìn)行編譯, 否則對(duì)程序段2進(jìn)行編譯。這與第一種形式的功能正相反。

  3. 第三種形式:

  #if 常量表達(dá)式

  程序段1

  #else

  程序段2

  #endif

  它的功能是,如常量表達(dá)式的值為真(非0),則對(duì)程序段1 進(jìn)行編譯,否則對(duì)程序段2進(jìn)行編譯。因此可以使程序在不同條件下,完成不同的功能

  #define R 1

  main(){

  float c,r,s;

  printf ("input a number: ");

  scanf("%f",&c);

  #if R

  r=3.14159*c*c;

  printf("area of round is: %f\n",r);

  #else

  s=c*c;

  printf("area of square is: %f\n",s);

  #endif

  }

  本例中采用了第三種形式的條件編譯。在程序第一行宏定義中,定義R為1,因此在條件編譯時(shí),常量表達(dá)式的值為真, 故計(jì)算并輸出圓面積。上面介紹的條件編譯當(dāng)然也可以用條件語句來實(shí)現(xiàn)。 但是用條件語句將會(huì)對(duì)整個(gè)源程序進(jìn)行編譯,生成的目標(biāo)代碼程序很長,而采用條件編譯,則根據(jù)條件只編譯其中的程序段1或程序段2, 生成的目標(biāo)程序較短。如果條件選擇的程序段很長, 采用條件編譯的方法是十分必要的。

上一頁  1 2 3 4  下一頁

  相關(guān)推薦:

  2012年軟考系統(tǒng)分析師考試60天完美復(fù)習(xí)計(jì)劃

  2012年軟件水平考試網(wǎng)絡(luò)工程師章節(jié)筆記講義匯總

  2012年上半年軟件水平考試成績查詢匯總

文章搜索
軟件水平考試欄目導(dǎo)航
版權(quán)聲明:如果軟件水平考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請與我們聯(lián)系800@exam8.com,我們將會(huì)及時(shí)處理。如轉(zhuǎn)載本軟件水平考試網(wǎng)內(nèi)容,請注明出處。