无法打开源文件 "stdafx.h"

找不到stdafx.h头文件问题

#include "stdafx.h"
#include "stdlib.h"

char* getcharBuffer()
{
    return "1919,3a3a";
}    
void changeto4(char * buffer)
{
    while(*buffer)
    {
        if(*buffer == '3')
        {
            *buffer='4';
        }
        buffer++;
    }    
}
int _tmain(int argc, _TCHAR* argv[])
{
    printf("%s\n","Any key continue...");
    getchar();
    char *str=getcharBuffer();
    changeto4(str);
    printf("%s",str);
    return 0;
}

编译报错:无法打开包括文件:“stdafx.h”: No such file or directory

网上各种搜索,知道了解决办法。就是注释掉这一行,因为这个头文件主要作用就是较快速度之类的。注释掉对主程序影响不大。但是我想知道为什么 我的会报错。

//自己找到问题的答案了,给遇到同样问题的同学分享一下。
//摘自《VC++ 编程指南》
预编译头文件:STDAFX.CPP,STDAFX.H
这两个文件用于建立一个预编译的头文件xxxproject.PCH和一个预定义的类型文件STDAFX.OBJ。由于MFC体系结构非常大,包含许多头文件,如果每次都编译的话比较费时。因此,我们把常用的MFC头文件都放在stdafx.h中,如afxwin.h、afxext.h、afxdisp.h、afxcmn.h等,然后让stdafx.cpp包含这个stdafx.h文件。这样,由于编译器可以识别哪些文件已经编译过,所以stdafx.cpp就只编译一次,并生成所谓的预编译头文件(因为它存放的是头文件编译后的信息,故名)。如果读者以后在编程时不想让有些MFC头文件每次都被编译,也可以将它加入到stdafx.h中。采用预编译头文件可以加速编译过程。
//所以我的代码报错的原因就是我没有创建这个文件,所以提示找不到头文件stdsfx.h。

因为我是用VS2012创建的空项目,所以VS没有自动生成stdafx.h这个头文件。这样会导致后面的_tmain()函数报 error C2061: 语法错误: 标识符“_TCHAR”,输入输出函数也找不到:error C3861: “printf”: 找不到标识符。

看了上面的解释之后,其实就很简单了。既然没有这个头文件,那么就注释掉。自己手工加上需要的头文件即可

//#include "stdafx.h"
#include <stdio.h>
#include "stdlib.h"
#include <tchar.h>

转自https://blog.csdn.net/ningz6610/article/details/8911767

posted @ 2022-09-29 11:02  Ada_CN  阅读(2909)  评论(0编辑  收藏  举报