预处理指令pragma常见用法集锦(#pragma once、#pragma comment和#pragma warning)
#pragma once:
這是一個(gè)比較常用的指令,只要在頭文件的最開(kāi)始加入這條指令就能夠保證頭文件被編譯一次,避免文件被重復(fù)包含。
*********************************** 例如 *****************************************
頭文件中的
#if _MSC_VER > 1000 //MFC版本
#pragma once //編譯一次
#endif // _MSC_VER > 1000
是什么意思?
以上意思就是:如果MFC的版本大于4。2的話(huà),本文件就只編譯一次。
************************************************************************************
#pragma comment:
該指令將一個(gè)注釋記錄放入一個(gè)對(duì)象文件或可執(zhí)行文件中。
該指令的格式為:
??????? #pragma comment( "comment-type" [, commentstring] )
comment-type(注釋類(lèi)型):可以指定為以下五種預(yù)定義的標(biāo)識(shí)符的其中一種。
1、compiler
??? 將編譯器的版本號(hào)和名稱(chēng)放入目標(biāo)文件中,本條注釋記錄將被編譯器忽略。
??? 如果你為該記錄類(lèi)型提供了commentstring參數(shù),編譯器將會(huì)產(chǎn)生一個(gè)警告。
??? 例如:#pragma comment( compiler )
2、exestr
?? 將commentstring參數(shù)放入目標(biāo)文件中,在鏈接的時(shí)候這個(gè)字符串將被放入到可執(zhí)行文件中。
?? 當(dāng)操作系統(tǒng)加載可執(zhí)行文件的時(shí)候,該參數(shù)字符串不會(huì)被加載到內(nèi)存中.但是,該字符串可以被dumpbin之類(lèi)的程序查找出并打印出來(lái),你可以用這個(gè)標(biāo)識(shí)符將版本號(hào)碼之類(lèi)的信息嵌入到可執(zhí)行文件中!
3、lib
?? 這是一個(gè)非常常用的關(guān)鍵字,用來(lái)將一個(gè)庫(kù)文件鏈接到目標(biāo)文件中。
?? 例如: #pragma comment(lib, "user32.lib")
??????????? 該指令用來(lái)將user32.lib庫(kù)文件加入到本工程中。
4、linker
?? 將一個(gè)鏈接選項(xiàng)放入目標(biāo)文件中,你可以使用這個(gè)指令來(lái)代替由命令行傳入的或者在開(kāi)發(fā)環(huán)境中設(shè)置的鏈接選項(xiàng)。
你可以指定/include選項(xiàng)來(lái)強(qiáng)制包含某個(gè)對(duì)象。
?? #pragma comment(linker,"/include:__mySymbol")
你可以在程序中設(shè)置下列連接選項(xiàng):
/DEFAULTLIB
/EXPORT
/INCLUDE
/MANIFESTDEPENDENCY
/MERGE
/SECTION
/NODEFAULTLIB
??
又如:
#pragma comment(linker,"/nodefaultlib:LIBC.lib")
該與指令是用來(lái)忽略特定庫(kù)的,解決諸如LINK : fatal error LNK1104: 無(wú)法打開(kāi)文件“LIBC.lib”的編譯錯(cuò)誤。
#pragma warning( disable : 4507 34; once : 4385; error : 164 )
等價(jià)于:
#pragma warning(disable:4507 34) // 不顯示4507和34號(hào)警告信息
#pragma warning(once:4385)??????? // 4385號(hào)警告信息僅報(bào)告一次
#pragma warning(error:164)????????? // 把164號(hào)警告信息作為一個(gè)錯(cuò)誤。
總結(jié)
以上是生活随笔為你收集整理的预处理指令pragma常见用法集锦(#pragma once、#pragma comment和#pragma warning)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: LM算法求解最小二乘问题
- 下一篇: 用户分析报告