命令行参数
Command-line arguments
我知道main
函数可以接受两个参数:int argc
和char* argv[]
。这是有据可查的。然而,main
函数也可以接受第三个参数。有人知道这个论点是什么吗?
这是环境变量,与正常的argv
类型相同。虽然它不是c++标准的一部分,但在某些系统上仍然可以工作。
它来自较旧的UNIX系统,其中环境变量通常是这样传递的。
函数main
在Mac OS上可能还有第四个参数,形式为char **apple
, "包含任意OS提供的信息"。
只有两种形式的main
是需要的支持,并且可移植到所有平台。但是一个实现可以添加任何它想要的额外形式:int main(
double )
将是合法的,例如(尽管我从未听说过)使用它的实现),int main( char
const* arg0... )
也是如此。在实践中,"经典"Unix将支持int main( int argc, char** argv, char** environ )
;这是不是Posix要求的,并且可能有一些Unix这并不支持它。在Unix世界之外,很多是早期的C实现试图看起来像Unix,也可能如此支持这个(现在更多是出于向后兼容性的原因)
为了传递一组不同的环境变量,可以传递char *env[]
,但是不需要这样命名它。您可以更改特定进程执行的环境。
看这篇文章,有解释
相关文章:
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 如何处理linux终端中带有负号(-)的C++中的命令行参数
- 使用 C++ 将命令行参数拆分为参数/向量
- 如何在OMNET++中添加专门的命令行参数?
- 如何在不传递命令行参数的情况下在 c++ 中设置环境变量
- atoi() 在应用于大型命令行参数时会产生不正确的值
- 是否可以在命令行中将输入参数传递给可执行文件
- 命令行参数,cant 或两个变量
- 在 Windows 中使用 boost::p rogram_options 从命令行参数读取 Unicode 字符
- 如何在 Android/NDK 上将命令行参数从 gradlew.bat 传递到 Clang
- 编写一个将 LLVM IR 文件作为命令行参数的程序
- 通过命令行参数获取llvm ir文件时面临问题
- 有没有办法根据命令行参数定义数组大小?运行时与编译时实例化?
- 从命令行获取参数时出现问题
- 如何在不使用文件扩展名的情况下使用命令行参数打开C++中的文本文件?
- 命令行参数在不到 3 个 LOC 中 int?
- 在命令行参数中使用引号
- 使用参数 + stdout + stderr 从命令行调用 MFC 应用程序
- 在VS2013中使用devenv (C++)传递命令行参数argv
- 二进制数据作为命令行参数