检查未在main()中使用的头文件

时间:2014-03-09 20:26:17

标签: c++ header include intellisense

我的问题是编译器/智能感知是否正在通过未在main()中使用的header / cpp文件。或者我是否必须从main()中的类中放入每个函数来检查它是否正确(当然这些类在同一目录中)?因为最近我可以编写完全错误的代码。 例如

Foo.cpp中

#include "foo.h" // some class 
bool foo::bar()
{
 return "a";
}

但是如果我不把它放在我的main()中它会编译(如果main中的代码当然是正确的)。我试图构建,清理,重建,重新启动,重新安装等等。我仍然没有错误。即使我将它包含在我的main.cpp中,它仍然会构建和编译。

我使用的是Visual Studio 2013 Professional x86版本。作为OS Windows 7 x64

修改

嗯,仍然没有像它应该的那样跑。 Visual Studio无法识别.cpp文件。我没有错误或警告。此外,在按下"创建方法实现"后,Visual Assists似乎不会移动我的方法。到我的.cpp文件。我尝试重新安装Visual Studio 2013,更新它并重新安装Visual Assist。我真的不懂。这之前有没有发生过?

2 个答案:

答案 0 :(得分:2)

您的函数foo::bar()实际上是有效的C ++:"a"是一个字符串文字,是一个字符数组。像所有数组一样,它可以隐式转换为指向其初始元素的指针,并且像所有指针一样,指针可以隐式转换为boolnullptr变为false,所有其他指针变为true)。

编译器将编译项目中的所有源文件。只有当它可以确定源文件包含该源文件包含的所有头文件时,它才会跳过重新编译该源文件。如果您没有在任何源文件中包含标头,则永远不会编译该标头。是否使用main()中的代码是无关紧要的。

答案 1 :(得分:0)

是的,编译器会编译文件夹中包含的所有头文件。如果头文件有任何错误,将通知您,并且会发生编译错误。