代碼:
#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>