我最近在搜索 C 环境变量时发现了以下内容:
int main (int argc, char *argv[], *char *envp[])
我四处搜寻,找不到关于我的问题的任何结论。
所有可用的论据是什么main()
可以接受吗?
C99 和 C11 标准草案允许实现定义的参数集main
,这些参数将特定于这些系统(非便携式)。来自部分5.1.2.2.1
:
[...]或以其他一些实现定义的方式[...]
我能找到的唯一附加参数是envp
and apple
,我们可以找到一个很好的描述维基百科关于入口点的 C 和 C++ 部分 http://en.wikipedia.org/wiki/Entry_point#C_and_C.2B.2B:
C 和 C++ 还允许其他依赖于平台的格式
标准,但在 C++ 中返回类型必须始终为 int;[6]
例如,Unix(尽管不是 POSIX.1)和 Microsoft Windows 有一个
第三个参数给出程序的环境,否则可以访问
通过stdlib.h中的getenv:
int main(int argc, char **argv, char **envp);
Mac OS X 和 Darwin 有第四个参数,包含任意
操作系统提供的信息,例如执行二进制文件的路径:[7]
int main(int argc, char **argv, char **envp, char **apple);
看起来 Windows 有一个微软特定的wmain https://msdn.microsoft.com/en-us/library/6wd819wh.aspx这需要wchar_t
:
int wmain(int argc, wchar_t *argv[], wchar_t *envp[]);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)