【问题标题】:How many arguments does main() have in C/C++C/C++ 中 main() 有多少个参数
【发布时间】:2011-02-01 06:47:21
【问题描述】:

main 使用了多少个参数? main 定义的哪些变体是可能的?

【问题讨论】:

标签: c++ c main


【解决方案1】:

C++ 标准:(Source)

C++98 标准在第 3.6.1.2 节中说

它的返回类型应该是 type int,否则它的类型是 实现定义。全部 实施应允许 以下主要定义:int main() 和 int main(int argc, char* argv[])

一般有3组参数:

  • 无参数/void
  • int argc, char ** argv
  • int argc, char ** argv, char ** env

其中argc 是命令行数量,argv 是实际命令行,env 是环境变量。

Windows:

对于 Windows 应用程序,您有一个 WinMain 入口点,其签名不同,而不是 main。

int WINAPI WinMain(
  __in  HINSTANCE hInstance,
  __in  HINSTANCE hPrevInstance,
  __in  LPSTR lpCmdLine,
  __in  int nCmdShow
);

OS X:(Source)

Mac OS X 和 Darwin 有第四个参数,其中包含操作系统提供的任意信息,例如执行二进制文件的路径:

int main(int argc, char **argv, char **envp, char **apple)

【讨论】:

  • 那么linux中的auxv呢?
  • @osgx : 我不确定是否有其他可能,但上面提到的 3 是 g++ 支持的
  • 一直没搞懂main返回int的要求。 main 是唯一明确允许具有隐式返回值的函数。为什么要特意让main 伪装成void,而不是一开始就让它成为void
  • @Dennis Zickefoose:听起来对 stackoverflow.com 来说是一个很好的问题 :)
猜你喜欢
  • 2019-12-07
  • 1970-01-01
  • 1970-01-01
  • 2022-06-20
  • 1970-01-01
  • 2011-05-09
  • 2016-11-19
  • 2013-12-26
  • 2020-11-10
相关资源
最近更新 更多