【发布时间】:2011-02-01 06:47:21
【问题描述】:
main 使用了多少个参数? main 定义的哪些变体是可能的?
【问题讨论】:
-
就在“相关”链接中:stackoverflow.com/questions/1621574/mains-signature-in-c 另外,您的标签与您的标题不一致。
-
添加
c++标签以与标题保持一致
main 使用了多少个参数? main 定义的哪些变体是可能的?
【问题讨论】:
c++标签以与标题保持一致
C++ 标准:(Source)
C++98 标准在第 3.6.1.2 节中说
它的返回类型应该是 type int,否则它的类型是 实现定义。全部 实施应允许 以下主要定义:int main() 和 int main(int argc, char* argv[])
一般有3组参数:
void
int argc, char ** argvint 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)
【讨论】:
main返回int的要求。 main 是唯一明确允许具有隐式返回值的函数。为什么要特意让main 伪装成void,而不是一开始就让它成为void?