VC2005 C++入门记
_tmain、main 、wmain and wWinmain 区别
main()是WINDOWS的控制台程序(32BIT)或DOS程序(16BIT),
WinMain()是WINDOWS的GUI程序,
wmain()是UNICODE版本的main(),
_tmain()是个宏,如果是UNICODE则他是wmain()否则他是main()
1、 main是C程序的函数,_tmain是main为了支持unicode所使用的main的別名
2、 _tmain的定义在<tchar.h>可以找到,如#define _tmain main,所以要加#i nclude <tchar.h>才能用。
3、 因此_tmain compile后仍为main,所以都可以执行
另外,wmain也是main的另一個别名,是为了支持二个字节的语言环境
int main( int argc[ , char *argv[ ] [, char *envp[ ] ] ] );
wmain( int argc, wchar_t *argv[ ], wchar_t *envp[ ] )
int _tmain(int argc, _TCHAR* argv[])
1) win32控制台应用程序
文件—〉新建—〉项目à Visual C++——〉win32——〉win32控制台应用程序—〉控制台应用程序—〉预编译头—〉完成—〉新建win32.cpp.
<1>//Basic IOProgram
// winconsole.cpp : 定义控制台应用程序的入口点。
#include "stdafx.h"
#include <iostream>
using std::cin;
using std::cout;
int _tmain(int argc, _TCHAR* argv[])
{
cout<<"Hello World./n";
getchar();
return 0;
}
F7编译,F5运行。
<2> //托换代码和非托管代码混合编程
// managed.cpp : 定义控制台应用程序的入口点。
#include "stdafx.h"
#using <mscorlib.dll> // 为了使用Console::WriteLine方法
#include <stdio.h> // 为了使用printf
using namespace System;
// 声明非托管代码
#pragma unmanaged
void print(char *msg)
{
printf("%s/n", msg);
}
// 切换回托换代码
#pragma managed
int _tmain(int argc, _TCHAR* argv[])
{
// 调用托管的方法输出到控制台
Console::WriteLine(L"Hello world from managed method");
// 使用标准输出
print("hello world from unmanaged method");
getchar();
return 0;
}
注意: 项目属性—〉配置属性—〉常规—〉公共语言运行库支持—〉公共语言运行库支持(/clr)