C++ VS2012 C++;-阻止Visual Studio自动添加包含项

C++ VS2012 C++;-阻止Visual Studio自动添加包含项,c++,visual-studio-2012,include,std,C++,Visual Studio 2012,Include,Std,在我的代码中的某个地方,我使用std::numeric_limits,但我没有#include(我确实#include,不确定这是否重要)。这对我来说很好;显然,VisualStudio在编译过程中为我纠正了错误。然后,其他正在使用相同代码(使用不同IDE)的人由于缺少包含而遇到编译器错误。有没有办法阻止VisualStudio这样做,防止这种情况再次发生 谢谢 为了支持其自身的需要,包含(可能通过其他嵌套的包含间接提供),因此在包含之后,它就可以使用了。打开标题并查看 但是,在另一个实现中,情

在我的代码中的某个地方,我使用std::numeric_limits,但我没有
#include
(我确实
#include
,不确定这是否重要)。这对我来说很好;显然,VisualStudio在编译过程中为我纠正了错误。然后,其他正在使用相同代码(使用不同IDE)的人由于缺少包含而遇到编译器错误。有没有办法阻止VisualStudio这样做,防止这种情况再次发生


谢谢

为了支持其自身的需要,
包含
(可能通过其他嵌套的包含间接提供),因此在包含
之后,它就可以使用了。打开
标题并查看


但是,在另一个实现中,情况可能并非如此,因此您不能依赖它。

我怀疑编译器是否在这样做。标题
更可能直接或间接地包含标题
。或者它只是包含一个文件,该文件引入了
std::numeric_limits
(该文件也将包含在
中)。它之所以这样做,大概是因为它使用了该头中的某些内容。您使用的是预编译头吗?
可能已经在预编译头文件中(由另一个头文件使用)。对于不同的编译器,这种行为会有所不同吗?如果是这样的话,是否有任何方法可以检测我何时使用间接引用的头文件中的函数?我没有使用预编译的头文件。Visual Studio中是否有任何方法可以检查代码是否使用间接引用的函数?@Jordevermeulen:我怀疑;预处理器插入包含的内容,编译器本身看到一个包含所有内容的翻译单元。它既不聪明也不漂亮,它很简单。静态分析工具可以检测不必要的头文件,但我不确定它们是否会检测到丢失的直接包含(如果它们是间接包含的)——它怎么知道这不是故意的?例如,使用Win API时包含“windows.h”是正常的,但其中大部分都是在故意嵌套的包含中定义的(例如windef.h,直接包含它是不寻常的)。我明白你的意思,这确实很难区分。