青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

colorful

zc qq:1337220912

 

關(guān)于#pragma once(轉(zhuǎn))

在所有的預處理指令中,#pragma指令可能是最復雜的了,它的作用是設(shè)定編譯器的狀態(tài)或者是指示編譯器完成一些特定的動作。#pragma指令對每個 編譯器給出了一個方法,在保持與C和C++語言完全兼容的情況下,給出主機或操作系統(tǒng)專有的特征。依據(jù)定義,編譯指示是機器或操作系統(tǒng)專有的,且對于每個 編譯器都是不同的。其格式一般為:#pragma para,其中para為參數(shù),下面來看一些常用的參數(shù)。

(Each   implementation   of   C   and   C++   supports   some   features   unique   to   its   host   machine   or   operating   system.   Some   programs,   for   instance,   need   to   exercise   precise   control   over   the   memory   areas   where   data   is   placed   or   to   control   the   way   certain   functions   receive   parameters.   The   #pragma   directives   offer   a   way   for   each   compiler   to   offer   machine-   and   operating-system-specific   features   while   retaining   overall   compatibility   with   the   C   and   C++   languages.   Pragmas   are   machine-   or   operating-system-specific   by   definition,   and   are   usually   different   for   every   compiler. )

(1)message參數(shù)。Message參數(shù)是我最喜歡的一個參數(shù),它能夠在編譯信息輸出窗口中輸出相應(yīng)的信息,這對于源代碼信息的控制是非常重要的。其使用方法為:

#pragma message(“消息文本”),當編譯器遇到這條指令時就在編譯輸出窗口中將消

息文本打印出來。

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

#ifdef   _X86    

#pragma   message(“_X86   macro   activated!”)    

#endif    

當我們定義了_X86這個宏以后,應(yīng)用程序在編譯時就會在編譯輸出窗口里顯示

“_X86   macro activated!”。我們就不會因為不記得自己定義的一些特定的宏而抓耳

撓腮了。    

   

(2)另一個使用得比較多的pragma參數(shù)是code_seg。格式如:    

#pragma   code_seg(   ["section-name"[,"section-class"]   ]   )    

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

(3)#pragma once (比較常用)。只要在頭文件的最開始加入這條指令就能夠保證

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

(4)#pragma hdrstop表示預編譯頭文件到此為止,后面的頭文件不進行預編譯。BCB

可以預編譯頭文件以加快鏈接的速度,但如果所有頭文件都進行預編譯又可能占太多磁盤空間,所以使用這個選項排除一些頭文件。有時單元之間有依賴關(guān)系,比如單元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號警告信息    

#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),并且全局警告    

等級設(shè)定為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關(guān)鍵字,可以幫我們連入一個庫文件。  

   

(8)#pragma   pack() 我們知道在VC中,對于想結(jié)構(gòu)體Struct這樣的類型,VC采

用8字節(jié)對齊的方式,如果我們不想使用8字節(jié)對齊(在網(wǎng)絡(luò)變成中經(jīng)常需要這樣),我們可以在結(jié)構(gòu)體前面加上    

#pragma   pack(1)    

struct    

{    

......    

}    

#pragma   pack()

二.#if _MSC_VER > 1000    #pragma once    #endif  

(1)_MSC_VER。 Defines   the   compiler   version.   Defined   as   1200   for   Microsoft   Visual   C++   6.0.   Always   defined.   

(2)#if   _MSC_VER   > 1000的意思是指如果vc編譯器的版本大于1000則這個語句

被編譯!大概小于1000的版本不支持#pragma   once這個語句。

(3)#pragma   once 。Specifies   that   the   file,   in   which   the   pragma   resides,

will   be   included   (opened)   only   once   by   the   compiler   in   a   build.   A   common   use   for   this   pragma   is   the   following:  

//header.h  

#pragma   once  

//   Your   C   or   C++   code   would   follow:  

#pragma   once    加入頭文件的第一行 指示這個文件在編譯時只被編譯器文件編譯

(打開)一次!一般用到.h中防止文件被重復包括!  

三.#pragma once    與   #ifndef    #define   #endif  

(1)從定義上即可看出,pragmas指令是某種機器或者操作系統(tǒng)獨有的,并且不同編譯器也常常有別。#pragma once這個是編譯器相關(guān)指令,就是說在這個編譯系統(tǒng)

上能用,但是在其他編譯系統(tǒng) 不一定型,也就是說移植型差。不過現(xiàn)在基本上

已經(jīng)是每個編譯器都有這個定義了。

#ifndef   #define #endif這個是語言支持指令,這是C/C++語言中的宏定義,通過

宏定義避免文件多次編譯。所以在所有支持C++語言的編譯器上都是有效的。如果寫的程序要   跨平臺,最好使用這種方式。

(2)#ifndef   #define #endif   #ifndef 還有其它作用,防止頭文件重復引用只是

其中一個應(yīng)用而已。#pragma只有微軟支持。

(3)#ifndef   #define #endif   他讀到#ifndef之后,如果已經(jīng)定義過了,就會跳過

這一大片,一直到#endif為止。這將增加build時間,因為每次compiler都會打開這個文件,然后搜索全文件一遍。而如果碰到了#pragma once,他就會立刻停止,

關(guān)閉打開的這個文件。在某種程度上減少 了build時間。一般用法:    

#ifndef  

#define  

#pragma   once  

.....  

#endif  

四. #pragma   data_seg(".mdata").....#pragma data_seg()可以讓編譯器把兩者之間

的所有已初始化變量放入一個新的.mdata段中。應(yīng)用之一是單應(yīng)用程序。

有的時候我們可能想讓一個應(yīng)用程序只啟動一次,就像單件模式(singleton)一樣,實現(xiàn)的方法可能有多種,這里說說用#pragma data_seg的實現(xiàn),很是簡潔便利。

應(yīng)用程序的入口文件前面加上:

#pragma data_seg("flag_data")

int app_count = 0;

#pragma data_seg()

#pragma comment(linker,"/SECTION:flag_data,RWS")

然后程序啟動的地方加上

if(app_count>0) // 如果計數(shù)大于0,則退出應(yīng)用程序。

{

//MessageBox(NULL, "已經(jīng)啟動一個應(yīng)用程序", "Warning", MB_OK);

//printf("no%d application", app_count);

return FALSE;

} app_count++;

總結(jié):

1. #ifndef 由語言支持所以移植性好,#pragma 可以避免名字沖突

2. 調(diào)查一下<stdlib.h>和<iostream>等標準庫, 用得都是#ifndef, 我個人推薦這種方式.

posted on 2012-03-08 10:09 多彩人生 閱讀(570) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


導航

統(tǒng)計

常用鏈接

留言簿(3)

隨筆分類

隨筆檔案

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲网址在线| 欧美日韩精品久久久| 久久亚洲春色中文字幕| 欧美一级片一区| 性亚洲最疯狂xxxx高清| 午夜精品久久久久| 欧美一级电影久久| 久久免费视频网站| 欧美成人午夜免费视在线看片| 免费的成人av| 亚洲精品黄网在线观看| 亚洲日本久久| 亚洲欧美日韩一区二区三区在线观看 | 久久综合色8888| 欧美激情综合五月色丁香小说| 亚洲一区二区三区免费观看| 亚洲综合色激情五月| 欧美一区二区啪啪| 久久久九九九九| 欧美精品v日韩精品v国产精品| 麻豆精品传媒视频| 久热re这里精品视频在线6| 国产精品99久久久久久白浆小说| 国产日韩一区二区| 国产欧美视频一区二区| 国产精品你懂的在线欣赏| 欧美激情在线观看| 国产精品欧美日韩一区| 亚洲免费在线看| 欧美视频精品一区| 国产一区二区三区在线观看免费| 亚洲国产成人久久综合| 亚洲一区黄色| 久久这里有精品视频| 亚洲精品国产精品国产自| 一区二区三区你懂的| 久久成年人视频| 欧美日韩色婷婷| 在线观看欧美日韩| 亚洲伊人伊色伊影伊综合网| 久久亚洲影音av资源网| aⅴ色国产欧美| 你懂的国产精品| 国际精品欧美精品| 翔田千里一区二区| 一本大道久久a久久精品综合| 老司机久久99久久精品播放免费 | 欧美大片第1页| 国产一区二区三区不卡在线观看| 亚洲视频在线观看视频| 欧美国产丝袜视频| 久久久精品999| 国产中文一区二区| 欧美一级专区| 亚洲一区二区精品在线观看| 国产亚洲午夜高清国产拍精品| 亚洲国产精品www| 羞羞视频在线观看欧美| 一本到12不卡视频在线dvd| 欧美国产高潮xxxx1819| 亚洲欧洲三级| 亚洲国产综合在线看不卡| 老色鬼久久亚洲一区二区| 狠狠综合久久| 欧美mv日韩mv亚洲| 蜜桃久久精品一区二区| 亚洲国产三级在线| 亚洲国内自拍| 欧美视频中文一区二区三区在线观看| 一区二区三区国产精华| 一本久久综合| 国产拍揄自揄精品视频麻豆| 久久国产精品99国产精| 久久国产精品色婷婷| 在线观看视频日韩| 欧美激情一区二区三区在线视频 | 亚洲欧美成人在线| 亚洲欧美视频在线| 一区在线观看| 亚洲精品看片| 国产农村妇女毛片精品久久麻豆 | 久久久久久尹人网香蕉| 久久久亚洲国产美女国产盗摄| 亚洲第一精品夜夜躁人人躁| 亚洲国产高清一区二区三区| 欧美精品一区二区三区视频| 亚洲欧美日韩久久精品| 欧美一二三视频| 亚洲国产午夜| 亚洲女同性videos| 亚洲国产精品va| 在线视频免费在线观看一区二区| 国产视频精品xxxx| 亚洲激情视频在线观看| 国产精品私拍pans大尺度在线| 久久久久久69| 欧美日韩少妇| 免费不卡在线观看av| 欧美日韩亚洲综合在线| 久久久亚洲国产美女国产盗摄| 免费一级欧美片在线观看| 亚洲欧美另类国产| 免费亚洲婷婷| 另类av一区二区| 国产精品久久久久婷婷| 欧美激情亚洲激情| 国模精品一区二区三区色天香| 亚洲激情一区二区| 激情久久久久久久| 亚洲一区二区三区中文字幕在线 | 亚洲日本无吗高清不卡| 亚洲手机在线| 亚洲国产经典视频| 亚洲婷婷综合久久一本伊一区| 欧美va亚洲va国产综合| 久久精品99国产精品酒店日本| 国产欧美日韩视频| 久久免费黄色| 亚洲视频一区二区| 久久精品一区蜜桃臀影院 | 在线观看一区| 欧美国产综合视频| 日韩小视频在线观看专区| 久久久久欧美精品| 欧美性久久久| 亚洲国产一区二区三区青草影视 | 久久成年人视频| 亚洲欧洲精品一区二区| 亚洲专区在线| 亚洲你懂的在线视频| 欧美激情一区二区三区四区| 久久综合亚洲社区| 国产精品最新自拍| 99re视频这里只有精品| avtt综合网| 欧美激情综合色| 欧美高潮视频| 国语自产精品视频在线看8查询8| 亚洲一区二区三区精品在线| 一区二区三区 在线观看视频| 免费一区视频| 亚洲精品一品区二品区三品区| 极品少妇一区二区三区精品视频| 亚洲欧美日韩精品久久久| 亚洲伊人色欲综合网| 欧美视频在线观看| 亚洲毛片在线观看| 亚洲精选91| 欧美日韩少妇| 亚洲欧美日韩另类精品一区二区三区| 午夜日韩电影| 国产亚洲一区二区三区在线观看| 午夜视频在线观看一区二区| 久久精品国语| 影音先锋国产精品| 麻豆成人精品| av成人激情| 久久久九九九九| 在线观看不卡| 欧美日本在线| 香港成人在线视频| 欧美激情一区二区三级高清视频| av成人免费在线观看| 国产精品丝袜xxxxxxx| 久久精品视频亚洲| 亚洲国产精品va在线看黑人 | 性欧美办公室18xxxxhd| 久久久99久久精品女同性| 日韩视频久久| 国产精品99久久久久久宅男| 欧美亚洲一区三区| 欧美另类在线播放| 在线观看一区| 久久精品国产一区二区电影| 亚洲精品美女在线| 免费人成精品欧美精品| 国产无遮挡一区二区三区毛片日本| 亚洲乱码久久| 久久久久**毛片大全| 国产精品va在线| 亚洲欧美欧美一区二区三区| 免费不卡视频| 亚洲免费影视| 亚洲国产一区二区精品专区| 欧美午夜激情视频| 蜜臀va亚洲va欧美va天堂| 一区二区三区国产在线观看| 久久综合伊人77777蜜臀| 亚洲女人av| 亚洲精品在线看| 激情欧美丁香| 国产精品外国| 欧美日韩伦理在线| 免费成人高清在线视频| 性欧美精品高清| 亚洲深夜影院| 亚洲看片免费| 亚洲激情校园春色| 欧美黄免费看| 免费一区二区三区|