寫的比較好,所以轉過來。。。。以後忘記的話還可以複習一下,呵呵^_^!
#pragma 指示符
嗯,今天說點什麼呢?昨天的話題中說到了使用“#pragma”指示符設定連接器參數來匯出函數,其實“#pragma”的功能遠遠不止於此,大部分我都沒用過,今天就隨便說說的“#pragma”指示符中我所使用過一些東東吧。
1.指示檔案只包含一次
在標頭檔中,一般在整個工程中我們只要包含一次就夠了,但是如果我在多個 .c/.cpp 檔案中都要包含著個標頭檔,比如 Windows.h,那很多聲明等等豈不是有兩次了?解決這個問題的傳統的方法是在標頭檔開始出用 #define 定義一個宏,比如 Windows.h 中:
#ifndef _WINDOWS_
#define _WINDOWS_
然後在檔案結為加上 #endif,這樣就可以避免被包含多次。但是這樣的後果是代碼的可讀性較差 (個人觀點),VC 給我們提供了另外一個途徑,那就是在檔案的前面加上:
#pragma once”
是不是很方便?
2.使警告無效
有時候我們不得不對變數進行強制轉換,由此引來編譯器的一番警告,特別是 C++ 中,類型檢查相對於 C 更為嚴格。這雖然不影響什麼,但是看起來多不爽——我是故意要這樣的,你警告什麼!:)這時候你看到警告類型,比如“warning C4311: “類型轉換” : 從“HHOOK”到“BOOL”的指標截斷”,在前面加上:
#pragma warning(disable: 4311)
編譯器就沒話說了:)。
3.指定串連要使用的庫
比如我們串連的時候用到了 WSock32.lib,你當然可以不辭辛苦地把它加入到你的工程中。但是我覺得更方便的方法是使用 #pragma 指示符,指定要串連的庫:
#pragma comment(lib, "WSock32.lib")
4.顯示編譯訊息
沒多少用處,舉個例子吧:
#ifdef _DEBUG
#pragma message("編譯串連為偵錯模式...")
#endif // _DEBUG