zoukankan      html  css  js  c++  java
  • 关于找不到stdafx.h头文件问题(pass)

    代码:

    #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
    ","Any key continue...");
        getchar();
        char *str=getcharBuffer();
        changeto4(str);
        printf("%s",str);
        return 0;
    }

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

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

    //自己找到问题的答案了,给遇到同样问题的同学分享一下。
    //摘自《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>
  • 相关阅读:
    java中的abstract、接口、final和Object
    java中的多态性
    java中的继承和覆盖
    面向对象编程
    java中的this
    java中的类与对象(2)
    java中的类与对象(1)
    Java中的运算及优先级
    Selenium Python
    Python学习①. 基础语法
  • 原文地址:https://www.cnblogs.com/VIPler/p/4275149.html
Copyright © 2011-2022 走看看