[英]What does “#pragma comment” mean?
#pragma comment
在以下內容中意味着什么?
#pragma comment(lib, "kernel32")
#pragma comment(lib, "user32")
#pragma comment
是一個編譯器指令,它指示Visual C ++在生成的目標文件中留下注釋。 然后,鏈接器在處理目標文件時可以讀取注釋。
#pragma comment(lib, libname)
告訴鏈接器將“libname”庫添加到庫依賴項列表中,就好像您已在Linker->Input->Additional dependencies
的項目屬性中添加它一樣。
請參閱MSDN上的#pragma評論
我一直稱它們為“編譯器指令”。 它們指導編譯器在編譯階段執行分支操作,包括如上所示的lib,禁用特定錯誤等。
編譯器公司通常會創建自己的擴展來促進其功能。 例如,(我相信)微軟開始了“#pragma once”交易,它只在MS產品中,現在我不太確定。
Pragma指令它包含您將看到的表中的“#pragma comment”。
HTH
我懷疑GCC有自己的#pragma's。
這些鏈接在MSVC ++中選擇的庫中。
Pragma指令指定操作系統或特定於機器(x86或x64等)的編譯器選項。 有幾種選擇。 有關詳細信息, 請訪問https://msdn.microsoft.com/en-us/library/d9x1s805.aspx
#pragma comment( comment-type [,"commentstring"] )
具有此格式。
有關不同注釋類型的詳細信息,請參閱https://msdn.microsoft.com/en-us/library/7f0aews7.aspx 。
#pragma comment(lib, "kernel32") #pragma comment(lib, "user32")
上面的代碼行包括鏈接器需要搜索的庫名稱(或路徑)。 這些詳細信息作為目標文件中庫搜索記錄的一部分包含在內。
因此,在這種情況下,鏈接器會搜索kernel.lib
和user32.lib
,並將其包含在最終的可執行文件中。
MSDN提供的答案和文檔是最好的,但我想添加一個我使用很多的典型案例,需要使用#pragma comment
在鏈接時向鏈接器發送命令,例如
#pragma comment(linker,"/ENTRY:Entry")
告訴鏈接器將入口點從WinMain()
更改為Entry()
之后, CRTStartup
將控制轉移到Entry()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.