#include在cdd中stdafx.h之前的iostream

时间:2018-05-02 10:58:07

标签: c++ visual-studio include console-application

我在Visual Studio社区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时它不起作用?

1 个答案:

答案 0 :(得分:3)

可以找到你的问题的答案,有点令人费解,here

stdafx.h启用预编译头。根据给出的错误,以及Microsoft如何实现预编译头文件的讨论,编译器似乎只是从stdafx.h的包含开始编译。所以当在iostream之后放置stdafx.h时,不包括iostream,产生了神秘的错误。