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

2012年軟考程序員輔導:C語言預處理命令總結

  五、#line 100 “jia” cout《“#line change line and filename!”《endl; //line 100 cout《__LINE__《endl; //101 cout《__FILE__《endl; //jia#pragma命令#pragma 為實現(xiàn)時定義的命令,它允許向編譯程序傳送各種指令。

  #pragma的作用是設定編譯器的狀態(tài)或者是指示編譯器完成一些特定的動作。#pragma指令對每個編譯器給出了一個方法,在保持與C和C++語言完全兼容的情況下,給出主機或操作系統(tǒng)專有的特征。依據(jù)定義,編譯指示是機器或操作系統(tǒng)專有的,且對于每個編譯器都是不同的。

  1、其格式一般為: #Pragma Para 1 message 參數(shù)。

  Message 參數(shù)能夠在編譯信息輸出窗口中輸出相應的信息,這對于源代碼信息的控制是非常重要的。其使用方法為:#pragma message(“消息文本”)

  當編譯器遇到這條指令時就在編譯輸出窗口中將消息文本打印出來。

  當我們在程序中定義了許多宏來控制源代碼版本的時候,我們自己有可能都會忘記有沒有正確的設置這些宏,此時我們可以用這條指令在編譯的時候就進行檢查。假設我們希望判斷自己有沒有在源代碼的什么地方定義了_X86這個宏可以用下面的方法#ifdef _X86 #pragma message(“_X86 macro activated!”)

  #endif當我們定義了_X86這個宏以后,應用程序在編譯時就會在編譯輸出窗口里顯示“_ X86 macro activated!”。我們就不會因為不記得自己定義的一些特定的宏而抓耳撓腮了。

  2、code_seg 參數(shù)。

  格式如:#pragma code_seg( [“section-name”[,“section-class”] ] )

  它能夠設置程序中函數(shù)代碼存放的代碼段,當我們開發(fā)驅(qū)動程序的時候就會使用到它。

  3、#pragma once (比較常用)

  只要在頭文件的最開始加入這條指令就能夠保證頭文件被編譯一次。這條指令實際上在VC6中就已經(jīng)有了,但是考慮到兼容性并沒有太多的使用它。

  4、#pragma hdrstop表示預編譯頭文件到此為止,后面的頭文件不進行預編譯。BCB可以預編譯頭文件以加快鏈接的速度,但如果所有頭文件都進行預編譯又可能占太多磁盤空間,所以使用這個選項排除一些頭文件。

  有時單元之間有依賴關系,比如單元A依賴單元B,所以單元B要先于單元A編譯。你可以用#pragma startup指定編譯優(yōu)先級,如果使用了#pragma package(smart_init) ,BCB就會根據(jù)優(yōu)先級的大小先后編譯。

  5、#pragma resource “*.dfm”表示把*.dfm文件中的資源加入工程。*.dfm中包括窗體外觀的定義。

  6、#pragma warning( disable : 4507 34; once : 4385; error : 164 )

  等價于:#pragma warning(disable:4507 34) /* 不顯示4507和34號警告信息。如果編譯時總是出現(xiàn)4507號警告和34號警告, 而認為肯定不會有錯誤,可以使用這條指令。*/ #pragma warning(once:4385) // 4385號警告信息僅報告一次#pragma warning(error:164) // 把164號警告信息作為一個錯誤。

  同時這個pragma warning 也支持如下格式:#pragma warning( push [ ,n ] )

  #pragma warning( pop )

  這里n代表一個警告等級(1——4)。

  #pragma warning( push )保存所有警告信息的現(xiàn)有的警告狀態(tài)。

  #pragma warning( push, n)保存所有警告信息的現(xiàn)有的警告狀態(tài),并且把全局警告等級設定為n. #pragma warning( pop )向棧中彈出最后一個警告信息,在入棧和出棧之間所作的一切改動取消。例如:#pragma warning( push )

  #pragma warning( disable : 4705 )

  #pragma warning( disable : 4706 )

  #pragma warning( disable : 4707 )

  //……

  #pragma warning( pop )

  在這段代碼的最后,重新保存所有的警告信息(包括4705,4706和4707)。

  7、pragma comment(……)

  該指令將一個注釋記錄放入一個對象文件或可執(zhí)行文件中。

  常用的lib關鍵字,可以幫我們連入一個庫文件。

  8、progma pack(n)

  指定結構體對齊方式。#pragma pack(n)來設定變量以n字節(jié)對齊方式。

  n字節(jié)對齊就是說變量存放的起始地址的偏移量有兩種情況:第一、如果n大于等于該變量所占用的字節(jié)數(shù),那么偏移量必須滿足默認的對齊方式,第二、如果n小于該變量的類型所占用的字節(jié)數(shù),那么偏移量為n的倍數(shù),不用滿足默認的對齊方式。

  結構的總大小也有個約束條件,分下面兩種情況:如果n大于所有成員變量類型所占用的字節(jié)數(shù),那么結構的總大小必須為占用空間最大的變量占用的空間數(shù)的倍數(shù); 否則必須為n的倍數(shù)。

  下面舉例說明其用法。

  #pragma pack(push) //保存對齊狀態(tài)#pragma pack(4)//設定為4字節(jié)對齊struct test { char m1;double m4;int m3;};#pragma pack(pop)//恢復對齊狀態(tài)為測試該功能,可以使用sizeof()測試結構體的長度!

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