stdafx.h включает предварительно скомпилированные заголовки. Исходя из данной ошибки и обсуждения того, как Microsoft реализует предварительно скомпилированные заголовки, кажется, что компилятор просто начинает компиляцию, начиная с включения stdafx.h. Поэтому, когда stdafx.h помещается после iostream, iostream не включается, вызывая загадочную ошибку.
дал консольное приложение C ++ в Visual Studio Community 2017. В проекте есть только файл main.cpp. Вот мой файл main.cpp:
#include <iostream>
#include "stdafx.h"
int main()
{
std::cout << "hello world!";
return 0;
}
Я получаю ошибку компиляции, что 'cout' не является членом std. Но если я включу iostream после stdafx.h, то есть
#include "stdafx.h"
#include <iostream>
int main()
{
std::cout << "hello world!";
return 0;
}
тогда он компилируется просто отлично. Так почему же это не работает, когда я включаю iostream перед stdafx.h?