다음을 통해 공유


인수 정의

프로토타입의 인수를 사용하면

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
    많은 UNIX 시스템에서 일반 확장인 envp 배열이 Microsoft C++에서 사용됩니다. 이는 사용자 환경에서 설정된 변수를 나타내는 문자열의 배열입니다. 이 배열은 NULL 항목으로 종료됩니다. 이 배열은 char(char *envp[ ])에 대한 포인터의 배열 또는 char(char **envp) 포인터에 대한 포인터로 선언할 수 있습니다. 프로그램에서 main 대신 wmain을 사용하는 경우 char 대신 wchar_t 데이터 형식을 사용하십시오. mainwmain으로 전달되는 환경 블록은 현재 환경의 "고정된" 복사본입니다. 이후에 putenv 또는 _wputenv에 대한 호출을 통해 환경을 변경하면 현재 환경(getenv/_wgetenv_environ/ _wenviron 변수에서 반환)이 변경되지만 envp가 가리키는 블록은 변경되지 않습니다. 환경 처리 억제에 대한 자세한 내용은 명령줄 처리 사용자 지정을 참조하십시오. 이 인수는 C에서는 ANSI와 호환되지만 C++에서는 호환되지 않습니다.

예제

다음 예제에서는 argc, argv 및 envp 인수를 main에 사용하는 방법을 보여 줍니다.

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

참고 항목

참조

main: 프로그램 시작