参数定义

在原型的参数

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";
    }
}

请参见

参考

主:启动程序