【发布时间】:2018-10-12 11:10:21
【问题描述】:
我在 Visual Studio Community 2017 中创建了一个 C++ 控制台应用程序。项目中只有一个 main.cpp 文件。这是我的 main.cpp 文件:
#include <iostream>
#include "stdafx.h"
int main()
{
std::cout << "hello world!";
return 0;
}
我得到一个编译错误,'cout' 不是 std 的成员。但是如果我在stdafx.h后面加上iostream,也就是
#include "stdafx.h"
#include <iostream>
int main()
{
std::cout << "hello world!";
return 0;
}
然后它编译就好了。那么,当我在 stdafx.h 之前包含 iostream 时,为什么它不起作用?
【问题讨论】:
-
关于 SO 上的预编译头文件有很多问题,我不确定将其中哪一个标记为重复。
-
在我的项目中,其他开发人员之一关闭了预编译头文件,并将我们的构建时间缩短了一半。
-
@Eljay 这取决于项目。在我正在处理的项目上 - 完全重建需要 2 个多小时。如果不花费大量时间,甚至无法测试预编译的标头如何影响构建性能。
-
@Eljay 在这种情况下,您很可能在预编译中包含错误的标头。只有多次包含的标头才能真正受益。
标签: c++ visual-studio include console-application