2011-01-01 6 views
16

명령 줄 프로그램의 main 메소드에 전달 된 인수 무엇 : 첫 번째 INT 평균목적-C 메인 루틴, 무엇을 : INT의는 argc, const를 숯불 * 변수는 argv []

int main(int argc, const char * argv[]) 

무엇인지 ?

두 번째 매개 변수는 무엇입니까? char 배열입니까?

어떻게 사용하나요?

obj-c를 배우는 것, 즉 연습하는 것 외에는 명령 줄 프로젝트 유형이 실제로 사용됩니다.

+16

@HyLian - 요즘 모두가 C 배경에서 온 것은 아닙니다. :-) –

+1

@middaparka 이것은 진정한 문제입니다! 사람들은 포인터가 무엇인지 또는 단순히 argc가 의미하는 바를 모른 채 objective-c를 사용하기 시작합니다. 내가 생각하는 배경이다. –

답변

25

argc은 "인수 개수"를 의미합니다. 실행 파일에 전달되는 인수의 수를 나타냅니다. argv은 "인수 값"을 의미합니다. 문자 배열에 대한 포인터입니다. 또는 다른 방식으로 생각해 보면 C 문자열은 문자 배열이므로 C 문자열의 배열입니다.

그래서 당신은 프로그램 "foo는"이이처럼 실행하면 :

foo -bar baz -theAnswer 42 

그런 다음 main() 기능에, argc 5 것이며, argv은 다음과 같습니다 그냥

argv[0] = "/full/path/to/foo"; 
argv[1] = "-bar"; 
argv[2] = "baz"; 
argv[3] = "-theAnswer"; 
argv[4] = "42"; 
2

주된 것은 C에서 왔으며 objective-c에만 국한되지 않습니다. Argc는 C 프로그램에 전달 된 명령 행 인수의 수를 제공합니다. Argv는 C 문자열의 배열이며 명령 행 인수를 포함합니다.

명령 줄 도구 나 명령 줄에서 상호 작용하는 프로그램을 작성할 때마다 명령 줄 프로젝트와 명령 줄 프로젝트를 사용할 수 있습니다.

3

다른 답변에 추가 - Objective-C는 OS X와 ​​iOS를 모두 대상으로합니다. iOS 명령 줄 응용 프로그램에는 가치가별로 없지만 OS X의 셸은 여전히 ​​널리 사용되고 있으며 많은 사람들이 명령 줄 도구를 작성하고 있습니다.

2

wikipedia (및 기타 소스를 말한다)로서 :

int main(void)

int main(int argc, char *argv[])

매개 변수 argc, 인수의 수, argv, 인수 벡터, 각각 프로그램의 수와 가치를 부여 명령 줄 인수 argcargv의 이름은 C의 유효한 식별자가 될 수 있지만 이러한 이름을 사용하는 것이 일반적입니다. C++에서, 이름은 문자 그대로 취해 져야하며, 엄격한 준수가 요구된다면 매개 변수 목록의 "void"은 생략되어야합니다. 다른 플랫폼 종속 형식도 C 및 C++ 표준에서 허용됩니다. 단, C++에서는 반환 유형이 int 상태 여야합니다.

int main(int argc, char **argv, char **envp)

5

main()에 매개 변수에 대한 UNIX 규칙은 다음과 같습니다 예를 들어, 유닉스 (안 POSIX.1하지만) 및 Microsoft Windows는 stdlib.h에서의 GetEnv을 통해 다른 접근, 프로그램의 환경을 제공하는 세 번째 인수가 프로그램이 실행될 때 명령 줄에 주어진 인수에 액세스합니다.Cocoa 앱에서는 평범한 구식 C 방식을 사용하거나 의 - arguments 메서드를 사용하여 NSArrayNSString 개체를 가져 오거나 NSUserDefaults을 사용하여 사전에 값으로 가져올 수 있습니다.

0

obj-c를 배우는 데 사용하는 것 외에도 명령 줄 프로젝트 유형이 실제로 사용됩니다.

실제로 사용하는 것은 작성한 Framework 또는 Application의 코드를 사용하여 명령 줄 도구를 만드는 것입니다. 도우미, 유틸리티, 실행 에이전트 및 데몬과 같은 모든 백그라운드 프로세스는 일반적으로 명령 줄 도구로 구현됩니다.

관련 문제