您的位置:首页 > 编程语言 > C语言/C++

C++入口函数main返回值

2012-11-06 14:56 295 查看
1.具有MS特色的main函数,MS坚持20年不动摇.无论是C89,C99,C++98都不支持这种形式.但是MS的编译器支持,如果想程序移植性良好,强烈建议不采用这种方式.

void main()
{
}

2.这种写法是为了兼容早期的C语言,因为第一个版本的C中内置类型只有int(char,double,float,bool都是后来加入的),既然只有一种类型,那么不写就默认int.C99标准中要求,对于这种写法至少给出编译警告.不建议采用这种老的书写方式.

main()
{
return 0;
}


3.win32控制台程序最常见的写法,返回值为0.为什么不返回-1,或者1呢.0表示正常情况.main的返回值是给操作系统用的,如果是单进程的程序一般用不到这个返回值,但是如果是

作业或者其他联系紧密的进程,那么这个返回值就有用了,其他进程可能会要使用这个返回值.

int main()
{
return 0;
}
5.C99规定了两种形式之一

参数1:argc 表示 命令行输入参数的个数(不输入默认1)

参数2:argv表示 命令行输入参数的值(不输入默认为exe的全路径)

int main(int argc,char**argv)
{

return 0;
}
例如如下代码:

#include <iostream>
int main(int argc,char* argv[])
{
std::cout<<argc<<std::endl;
int i;
for (i = 0 ;i < argc ; i ++)
{
std::cout<<argv[i]<<std::endl;
}
system("pause");
return 0;
};


直接双击运行输出如下结果:



命令行运行输出如下结果:



5.window窗口程序入口

int WINAPI WinMain( __in HINSTANCE hInstance, __in_opt HINSTANCE hPrevInstance, __in LPSTR lpCmdLine, __in int nShowCmd )
{
return 0;
}

其中宏__in表示入参,WINAPI调用约束 __stdcall

参数1:
hInstance 表示 程序的实力句柄
参数2:

HINSTANCE hPrevInstance 早期window应用程序用于表示适当程序是否有别的实例正在运行


参数3:

__in LPSTR lpCmdLine  命令行, 一般用于文件的load到内存


参数4:

__in int nShowCmd 窗口打开的是的状态(最大化,隐藏,正常)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: