在visual c++ 2008 中,当选择编辑一个32位Win32控制台应用程序时。
初始状态下系统自带函数:
  int _tmain(int argc, _TCHAR* argv[])
  {
      return 0;
  }
上述Win32控制台应用程序的入口程序是用来存放机器的一个环境变量的,如:机器名,系统信息等。
其中:
·int argc //参数个数
·char *argv[] //字符串数组,字符串数组的每个单元是 char* 类型的,指向一个C风格字符串。
·_TCHAR类型是宽字符型字符串,它是32位或者更高的操作系统中所使用的类型。
出处:
  

#include <iostream>#include <string.h>using namespace std;void main(int argc,char *argv[],char *envp[]){int iNumberLines=0; // Default is no line numbers.// If more than .EXE filename supplied, and if the// /n command-line option is specified, the listing// of environment variables is line-numbered.if(argc==2&&strcmp(argv[1],"/n")==0){iNumberLines=1;} // Walk through list of strings until a NULL is encountered.for(int i=0;envp[i]!=NULL;++i ){if(!iNumberLines)cout<<i<<":"<<envp[i]<<"n";}}

The envp parameter is a pointer to an array of null-terminated strings that represent the values set in the user’s environment variables.

_tmain:
1. main是所有C或C++的程序执行的起点,_tmain是main为了支持unicode所使用的main的别名。
2. _tmain需要一个返回值,而main默认为void。
3. _tmain的定义在<tchar.h>可以找到,如#define _tmain main,所以要加 #include <tchar.h> 才能用。
4. _tmain()是个宏,如果定义了UNICODE,则他是wmain(),否则他是main()。
5. _tmain这个符号多见于VC++创建的控制台工程中,这个是为了保证移植unicode而加入的。
6. 一般_t、_T、T()这些东西都是宏都和unicode有关系。
7. 对于使用非unicode字符集的工程来说,实际上_tmain和main没有差别。
8. 因此_tmain编译后后仍为main,所以都可以执行。
9. main()是WINDOWS的控制台程序(32BIT)或DOS程序(16BIT)。
10.WinMain()是WINDOWS的GUI程序。
11.另外,wmain也是main的另一个别名,是为了支持二个字节的Unicode语言环境。
  -----------------------
  int main( int argc, char *argv[ ], char *envp[ ])
  wmain( int argc, wchar_t *argv[ ], wchar_t *envp[ ] )
  int _tmain(int argc, _TCHAR* argv[ ])

【原文】http://blog.sina.com.cn/s/blog_48a45b950100ykwl.html

转载于:https://www.cnblogs.com/TenosDoIt/archive/2013/04/15/3022037.html

[转载]_tmain main wmain WinMain相关推荐

  1. main,tmain,winmain()等函数——UNICODE - sensensen - 博客园

    最近使用Visual Studio 2008 发现 入口函数为_tmain,google一下,得解: 1.main是C程序的函数,_tmain是main为了支持unicode所使用的main的別名 2 ...

  2. main与WinMain的区别

    main 是一般C程序的进入点: int main(int argc, char *argv[ ], char *envp[ ]); { -- } WinMain 则是Windows 程序的进入点: ...

  3. exe程序的启动过程

    学习windows 编程从mfc角度来说可分为两部分那就是WinMain函数以前的,和WinMain函数以后的.前者涉及很多windows操作系统内部的知识,后者么看mfc源码就可以了.虽然大多数程序 ...

  4. 程序编译过程与软件启动过程

    一.      软件执行流程 1. 软件编译流程 Ø  预编译完成宏展开工作. Ø  为每一个.cxx源文件编译一个目标文件(.obj,.o),目标文件中至少包含二进制的代码段和数据段.在cxx源文件 ...

  5. 线程基础知识——Windows核心编程学习手札系列之六

    线程基础知识 --Windows核心编程学习手札系列之六 线程与进程一样由两部分构成:一是线程的内核对象,操作系统用它来对线程实施管理,也是系统用来存放线程统计信息的地方:二是线程堆栈,用于维护线程在 ...

  6. EXE文件的加载过程

    一个microsoft的.exe程序文件的启动过程 2009-06-16 14:54 2101人阅读 评论(0) 收藏 举报 microsoftmfcwindowsshelldll数据结构 学习win ...

  7. _tmain与main,winMain,wmain收藏

    用过C言语的人都知道每一个C的程序都会有一个main函数, 但有时看别人写的程序却出现了_tmain,会感动很困惑. 我当时也是很困惑,于是上网找资料看. 现在将我得到的结果总结一下.因为并没有什么根 ...

  8. _tmain与main,winMain,wmain

    今天突然看到_tmain,觉得好陌生,不知道是什么意思,于是查找资料,下面的讲解的很详细,所以转帖来加深自己的印象,也分享给更多的人.原文网址为:http://blog.csdn.net/helloj ...

  9. 主函数 main WinMain _tmain _tWinMain 的区别

    From: http://blog.csdn.net/zhangxinrun/article/details/5781451 main是C/C++的标准入口函数名 WinMain是windows AP ...

最新文章

  1. 码农与架构师之间的差距,究竟在哪里?
  2. Palette优化界面色彩搭配
  3. 「数据库系列一」为什么要用数据库?
  4. 聚合复合_聚合复合微生物菌剂的功能
  5. Android 应用性能优化(4)---Android App性能评测分析-启动时间篇
  6. 这几个公众号带你看看BAT的工作情况
  7. C++使函数返回多个数组
  8. ln -s 一定要用绝对路径
  9. 使用邮件客户端整合日常信息
  10. idea no artifacts configured 配置
  11. 输出华氏温度用java_用JAVA写一个将华氏温度转换成摄氏温度的程序
  12. Span 介绍及使用(一)
  13. javascript 忽略 报错_JavaScript数据类型中易被忽略的点
  14. python: 实现一个简单的日记程序
  15. html网易云音乐图片轮播效果,Vue之网易云音乐PC版轮播图的实现
  16. VS2019下编译与配置GSL2.7【Release x64版】
  17. java 制作pdf模板,Java-pdf模板制作流程-使用pdf 模板生成pdf文件
  18. vm虚拟服务器无法启动,win10升级后vm虚拟主机无法启动的解决办法
  19. 常见的几种ADSL 路由器的端口映射方法
  20. Go-boomer-locust

热门文章

  1. qt4.7 字体字号设设置;中文乱码,
  2. docker 私有仓库与Harbor
  3. elementui进度条如何设置_vue.js+ElementUI实现进度条提示密码强度效果
  4. 库存管理系统软件测试,药房库存管理系统模块测试用例
  5. OpenKruise v0.8.0 版本:K8s 社区首个规模化镜像预热能力
  6. 马云、马斯克同台谈AI:人工智能拯救世界?
  7. ATSAMD21-XPRO开发板 评估基于 ATSAM D21 CortexM0+ 的微控制器
  8. 用户界面设计的一些方法和基本原则
  9. unity3d干货分享:实现敌人锥形视角的3个方法
  10. 永劫无间大神玩家ZX迷恋上单人三排,单局28杀,过程太过瘾了