参数定义
在原型的参数
int main( int argc[ , char *argv[ ] [, char *envp[ ] ] ] );
int wmain( int argc[ , wchar_t *argv[ ] [, wchar_t *envp[ ] ] ] );
允许方便命令行分析参数,因此,可选择,对环境变量。 参数定义如下:
argc
包含参数计数在 argv后面的整数。 argc 参数始终大于或等于 1。argv
表示命令行参数的数组 Null 终止的字符串输入的程序的用户。 按照约定,argv**[0]** 是过程调用的命令,argv**[1]** 是第一个命令行参数,依此类推,直到 argv**[argc]**,始终 NULL。 有关取消命令行过程的信息,请参见 自定义命令行过程。第一个命令行参数始终是 argv**[1],而最后一个是 argv[argc – 1]**。
备注
按照约定,argv[0] 是调用程序时使用的命令。但是,使处理 CreateProcess,并且如果您使用第一个和第二个参数 (lpApplicationName 和 lpCommandLine) 是可能的,argv[0] 可能不是可执行文件的名称;使用 GetModuleFileName 检索可执行文件的名称及其完全限定路径。
Microsoft 专用
- envp
envp 数组,是在多个 UNIX 系统的一个常见扩展,用于 Microsoft C++。 它是表示变量的字符串数组设置用户环境中。 该数组由 NULL 项停止。 它可以声明为数组的指针。char (char *envp [ ]) 或作为指向的指针。char (char ** envp**)。 如果程序使用 wmain 而不是 主要,请使用 wchar_t 数据类型而不是 char。 该环境块传递给 主要,并 wmain 是当前环境的“冻结”副本。 如果通过调用随后更改为 putenv 或 _wputenv,当前环境 (如返回 getenv/_wgetenv** 和 _environ/ _wenviron 变量) 将更改,但是,envp 点的块不会更改。 有关取消环境的过程的信息,请参见 自定义命令行过程。 此参数是 ANSI 兼容在 C 中,但不能在 C++。
示例
下面的示例演示如何使用 argc、argv和 envp 参数传递给 主要:
// argument_definitions.cpp
// compile with: /EHsc
#include <iostream>
#include <string.h>
using namespace std;
int main( int argc, char *argv[], char *envp[] ) {
int iNumberLines = 0; // Default is no line numbers.
// If /n is passed to the .exe, display numbered listing
// of environment variables.
if ( (argc == 2) && _stricmp( argv[1], "/n" ) == 0 )
iNumberLines = 1;
// Walk through list of strings until a NULL is encountered.
for( int i = 0; envp[i] != NULL; ++i ) {
if( iNumberLines )
cout << i << ": " << envp[i] << "\n";
}
}