簡體   English   中英

MSVC預編譯頭:哪些文件需要#include“ stdafx.h”?

[英]MSVC precompiled headers: Which files need to #include “stdafx.h”?

使用預編譯的標頭時,是否每個文件都需要#include "stdafx.h" 或者僅源文件需要包含它。

編輯:另外,我的預編譯頭文件#includes很多STL頭。 但是,在標頭中,有時我會返回std::vector或類似的函數,因此無論如何我都需要#include <vector> 這比包含stdafx.h更糟嗎? 我需要包括我的單元測試框架的定義。

每個源文件都需要在任何非注釋行之前包含它。 標頭不需要包含它,因為每個源文件都會在其他標頭之前包含它。

您可以在項目級別或文件級別設置是否要使用預編譯的頭文件。 對於項目設置,請轉到項目屬性對話框,然后單擊配置屬性/ C / C ++ /預編譯頭。 創建/使用預編譯頭有一個選項。 您可以通過在文件屬性對話框中設置相同的選項來覆蓋每個.cpp文件上的項目級別設置。

您所有的C / C ++文件都需要在頂部帶有預編譯標頭-如果為該項目設置了標頭。 但是您可以在每個C / C ++文件中將其關閉/打開(Kei所說的)。

如果要包含標准頭,請將其全部放入預編譯的頭中。 然后,您需要在常規頭文件(.h)中使用它們。 只要所有項目和文件都使用預編譯的頭文件即可。

正如其他人所說,只有您的源文件需要包括預編譯的頭文件。 我只補充說,無論有沒有預編譯頭文件,代碼都應該正確編譯。 為此,標頭應該是自包含的,不要依賴源文件,包括其他必需的標頭。 我僅將預編譯頭視為加速編譯的方式,而不將其視為項目中所有已使用頭的存儲庫。

暫無
暫無

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

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