簡體   English   中英

包括其他項目中的stdafx.h

[英]Include the stdafx.h from other projects

在Visual Studio解決方案中,我有兩個vcproj,一個叫kernellib.vcproj ,另一個叫kernerlibtest.vcproj 您可能會猜到,后者是前者的單元測試項目。

現在, kernellib.vcproj使用預編譯的頭文件,所有慢速WINAPI includes都位於stdafx.h 這是為了確保kernelib可以快速編譯。

現在,由於kernerlibtest.vcproj也使用了同一組include,我也想對kernerlibtest.vcproj執行此速度技巧,如何配置vcproj和解決方案文件來做到這一點?

在此處啟用它: Project -> Properties -> Configuration Properties-> C/C++ -> PreCompiled Headers 將選項“不使用預編譯頭”更改為“使用/ Yu”。 (這是它在vs2010中所做的,希望在vs2008中也是如此)

有很多方法可以使它起作用。 這是我的建議:

  • “ stdafx.h”(或者您調用預編譯頭文件)應該是每個模塊的內部頭文件。
  • 您應該只在stdafx.h中包含很少更改的標頭,而這些標頭並沒有太大變化。
  • 您應嚴格將其視為優化。
  • 僅包括您的.c / cpp文件中的stdafx.h,而不包括任何公共頭文件。
  • 如果您的標頭依賴於HWND之類的定義,則仍應在公共標頭中包含stdlib / winapi標頭。 這不會減慢庫的編譯速度,因為您首先要包含預編譯的標頭。
  • 在kernerlibtest的stdafx.h中,您甚至可以包含kernerlib.h(依賴項的公共標頭)。 如果經常修改kernerlib.h,您將一無所獲。
    • 如果您在工作樹中嵌套了一個大型的第三方庫,這將很有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM