读书人

关于VS2010的各种疑问,该如何处理

发布时间: 2012-04-12 15:46:35 作者: rapoo

关于VS2010的各种疑问
用VS2010这么久了,有些东西还是不明白;
#include "stdafx.h"//这是什么东东,有嘛作用??
int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}//这是什么东东,有嘛作用??

#pragma once//这是什么东东,有嘛作用??
#include "StdAfx.h"为什么这个跟第一个不一样啊,都是神马啊??
求高手解答!

[解决办法]
#include "stdafx.h"//这是什么东东,有嘛作用??
这个你得问微软了,这是他们自己搞的一个库头文件,另外他和#include "StdAfx.h"是一个意思,
这个在MFC应用程序中很常见,你写的类必须加上这个头文件才会被识别
int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}//这是什么东东,有嘛作用??
入口函数,参一个参数是命令行参数个数,后一个是命令行参数数组,这个你得去windows核心编程里找来龙去脉,这设计到C运行库方面的知识,程序是通过这个函数来进入的
#pragma once
防止头文件重复包含,这也是一个命令,但不止这一种,你可以google #pragma
[解决办法]
#include "stdafx.h"//系统生成的一个头文件
int _tmain(int argc, _TCHAR* argv[]) // 这是UNICODE的编码形式,表示用的是双字节,用的是TCHAR 而不是char类型
{
return 0;
}

#pragma once//防止头文件重复包含,和#ifndef #define的意思差不多
#include "StdAfx.h"这个好像是vs2010里的头文件包含已经不区分大小写了吧~~

[解决办法]
stdafx.h文件是为了照顾可视化调试用的。作用是辅助编译器生成pch文件,生成的这些文件在断点调试时会被ide用到。
tmain的表达方式其实由main演化而来。可惜以前的C/C++9x没有提供unicode的方法,结果这个main的标准表达是第二个参数始终是char * []。为了使多字节和宽字节具有相同的表达方式,微软自己用了tmain。它的作用就是当编译宏_UNICODE(这个_UNICODE非用户定义,是由编译器内部使用的)被关闭时tmain等同于main,而argv的类型就是char * [],被打开时则tmain等同于wmain,而argv的类型就是wchar_t * []。
[解决办法]
#pragma once
这个东西的作用是当一个头文件被一个源文件多次重复包含(直接的和间接的)时,取消发生重复声明和重复定义的情况。(比使用n个#ifndef ...更简洁)
[解决办法]
pch文件的一般作用是加快编译(减少编译耗时): http://en.wikipedia.org/wiki/Precompiled_header

读书人网 >C++

热点推荐