Microsoft Visual Studio C++ 編譯器選項設定

來源:互聯網
上載者:User
 1、vc ->Project->Setting->C/C++ 的最佳化選項依賴與Category下拉框:

  • General
     提供了最有效選擇一個一般最佳化目標的方法,但不允許精細地控制單個最佳化技術     在最佳化選項下有5種選擇:Default、Disable(Debug)、Maximize Speed、Minimize Size和Customize。其中Disable關閉所有最佳化選項,當需要編譯器執行一些所關切的更快速代碼最佳化,而清除其他所有最佳化包括Disable時,可以使用Default。對於函數級串連和字串假離線,Customize最佳化選項提供了對最佳化開關的手工控制。General Category的Maximize Speed 和 Minimum Size Settings
最佳化選項 Maximize Speed Minimum Seize
產生內建函式內聯
快速代碼最佳化
最小代碼最佳化
全域最佳化啟用
忽略幀指標
堆棧檢查關閉
字串假離線啟用
函數級連結啟用
  • Code Generation
     選擇針對處理器的最佳化和一個工程的預設調用規範。          CodeGeneration 包括使用者現在的針對特殊處理器的最佳化選項、預設的調用規、應用程式所使用的運行時類庫以及成員結構的對其方式。     選擇處理器          Processor選擇指示編譯器最佳化,預設設定下是Blend表示一種折衷處理。     選擇調用規範          Visual C++允許三種調用規範:__cdecl、__fastcall、__stdcall。調用規範決定了自左自右或者自右自左的參數傳遞。由誰負責清除堆棧以及函數名字解釋。          
調用規範 傳送順序 堆棧清除執行者 解釋風格
__cdecl 自右自左 調用程式 _functionName
__fastcall 自右自左 被調用程式 @functionName@nnn
__stdcall 自右自左 被調用程式 _functionName@nnn
nnn----表示參數列表中的位元組數      (1) __stdcall調用            __stdcall是Pascal程式的預設調用方式,參數採用從右至左的壓棧方式,被調函數自身在返回前清空堆棧。WIN32 Api都採用__stdcall調用方式,這樣的宏定義說明了問題: #define WINAPI _stdcall  按C編譯方式,__stdcall呼叫慣例在輸出函數名前面加底線,後面加“@”符號和參數的位元組數,形如_functionName@nnn。      (2) __cdecl調用           __cdecl是C/C++的預設調用方式,參數採用從右至左的壓棧方式,傳送參數的記憶體棧由調用者維護。__cedcl約定的函數只能被C/C++調用,每一個調用它的函數都包含清空堆棧的代碼,所以產生的可執行檔大小會比調用__stdcall函數的大。 由於_cdecl調用方式的參數記憶體棧由調用者維護,所以變長參數的函數能(也只能)使用這種呼叫慣例。由於Visual
C++預設採用__cdecl 調用方式,所以VC中中調用DLL時,使用者應使用__stdcall呼叫慣例。按C編譯方式,__cdecl呼叫慣例僅在輸出函數名前面加底線,形如_functionName。          (3) __fastcall調用            __fastcall調用較快,它通過CPU內部寄存器傳遞參數。(實際上,它用ECX和EDX傳送前兩個雙字(DWORD)或更小的參數,剩下的參數仍舊自右向左壓棧傳送,被調用的函數在返回前清理傳送參數的記憶體棧),按C編譯方式,__fastcall呼叫慣例在輸出函數名前面加“@”符號,後面加“@”符號和參數的位元組數,形如@@functionName@nnn     選擇執行階段程式庫          參考下這篇文章:http://blog.csdn.net/wangqiulin123456/article/details/8877221     選擇結構對齊
  • Customize
     自動選擇函數級的串連和字串假離線
  • Optimizations
     允許精細調整一個工程的最佳化

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.