预编译头文件的行为会导致错误

时间:2014-07-29 13:41:09

标签: c++ header-files

在下面的简单程序中,

#include<conio.h>

#include "stdafx.h"
#include<stdio.h>

int main(int argc, _TCHAR* argv[])
{
    printf("print");
    getch();
    return 0;
}

错误地说1>e:\cust\a\a\a.cpp(14) : error C3861: 'getch': identifier not found

我正在使用VS 2005.我知道&#34; stdafx.h&#34;是预编译头,但为什么我们不应该在它之前添加任何头文件?

1 个答案:

答案 0 :(得分:1)

VS中的预编译头工作方式使得预编译头(通常名为stdafx.h)必须是包含中的第一个头。更多,行

#include "stdafx.h"

应该是源代码中的第一件事,因为MSDN说“编译器会将.h文件之前发生的所有代码视为预编译。它跳过与.h文件关联的#include指令之外,使用包含的代码在.pch文件中,然后在文件名后编译所有代码。“。