關於找不到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\n","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>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM