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