繁体   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