진입점
Entry point컴퓨터 프로그래밍에서 진입점은 프로그램 실행이 시작되고 프로그램이 명령줄 [1]인수에 액세스할 수 있는 위치입니다.
프로그램의 실행을 시작하기 위해 로더 또는 운영체제는 제어권을 해당 진입점에 전달합니다. (부팅 중에는 운영체제 자체가 프로그램입니다).이것에 의해, 로드 시간(및 존재하는 경우는 다이나믹 링크 시간)에서 실행 시간으로의 이행이 표시됩니다.
일부 운영 체제 및 프로그래밍 언어의 경우 진입점은 언어의 지원 함수 집합인 런타임 라이브러리에 있습니다.라이브러리 코드는 프로그램을 초기화한 후 적절한 프로그램으로 제어를 전달합니다.다른 경우에는 프로그램이 런타임 라이브러리 [2]자체를 초기화할 수 있습니다.
단순한 시스템에서는 첫 번째 스테이트먼트부터 실행이 시작됩니다.이것은 인터프리터 언어, 단순한 실행 파일 형식 및 부트 로더에서 공통적입니다.그 외의 경우, 엔트리 포인트는, 절대 주소 또는 상대 주소(오프셋)가 될 수 있는 기존의 메모리주소에 있습니다.
또는 프로그램 실행은 프로그래밍 언어 또는 운영체제에 의해 정의된 통상적인 이름으로 또는 호출자가 지정한 이름으로 시작할 수 있다.많은 C-패밀리 언어에서 이 함수는main
; 그 결과, 진입점은 종종 메인 [3]기능으로 알려져 있습니다.
Java와 같은 JVM 언어에서 엔트리 포인트는 다음과 같은 정적 메서드입니다.main
C# 등의 CLI 언어에서 엔트리 포인트는 다음과 같은 이름의 정적 메서드입니다.Main
를 클릭합니다.[4]
사용.
진입점은 소스 코드와 실행 파일 모두에 적용됩니다.그러나 일상적인 소프트웨어 개발에서는 프로그래머가 소스 코드로만 진입점을 지정하기 때문에 훨씬 더 잘 알려져 있습니다.실행 파일의 엔트리 포인트는 실제 운영체제의 Application Binary Interface(ABI; 응용 프로그램바이너리 인터페이스)에 의존하며 컴파일러 또는 링커에 의해 생성됩니다(ABI에 의해 수정되지 않은 경우).링크된 다른 오브젝트 파일에도 엔트리 포인트가 있을 수 있으며 나중에 실행 파일의 엔트리 포인트를 생성할 때 링커에 의해 사용됩니다.
엔트리 포인트는 명령어 인수, 변수 또는 기타 정보를 에 의해 사용되는 로컬 변수로 전달할 수 있습니다.Main()
방법.이와 같이 프로그램 실행 시 특정 옵션을 설정하고 프로그램에 의해 해석할 수 있습니다.많은 프로그램에서는 다른 설정을 구성하거나 단일 프로그램을 사용하여 일련의 다양한 작업을 수행하기 위한 대체 방법으로 이 방법을 사용합니다.
컨템포러리
오늘날 대부분의 인기 있는 프로그래밍 언어와 운영 체제에서 컴퓨터 프로그램은 일반적으로 하나의 입력점만 가지고 있습니다.
C, C++, D, Zig, Rust, Kotlin 프로그램에서 이것은 이름이 붙은 함수입니다.main
자바에서는 이름 붙여진 정적 메서드입니다.main
(클래스는 호출 시 지정해야 하지만 C#에서는 라는 이름의 스태틱 메서드입니다).Main
를 클릭합니다.[5][6]
많은 주요 운영 체제에서 표준 실행 파일 형식은 단일 진입점을 가집니다.Linux 등의 Unix 및 Unix 유사 시스템에서 사용되는EX(Executable and Linkable Format)에서 엔트리 포인트는e_entry
ELF 헤더의 필드입니다.GNU 컴파일러 컬렉션(gcc)에서 링커에 의해 사용되는 엔트리 포인트는_start
기호.마찬가지로 Microsoft Windows에서 사용되는 Portable Executable 형식에서는 엔트리 포인트는AddressOfEntryPoint
이 필드는 COFF에서 상속됩니다.COM 파일에서 진입점은 0100h의 고정 오프셋에 있습니다.
싱글 엔트리 포인트 패러다임의 예외 중 하나는 Android입니다.Android 애플리케이션에는 하나의 엔트리 포인트가 없습니다.특별한 엔트리 포인트는 없습니다.main
기능.대신 시스템이 필요에 [7]따라 로드하고 실행할 수 있는 필수 컴포넌트(액티비티 및 서비스)가 있습니다.
경우에 따라서는 fat binary가 사용됩니다.이것은 하나의 파일로 패키지된 다른 타겟의 여러 실행 파일로 구성됩니다.대부분의 경우, 이것은 하나의 전체적인 진입점에 의해 구현됩니다.이 진입점은 타깃 고유의 진입점에 대한 모든 타깃 및 브랜치와 호환됩니다.다른 방법으로는 개별 실행 파일을 별도의 포크에 저장하는 방법이 있습니다. 각 포크는 운영체제에 의해 선택됩니다.
이력
지금까지 VMS나 OS/400과 같은 일부 현대의 레거시 시스템에서는 컴퓨터 프로그램에는 다수의 엔트리 포인트가 있으며, 각 엔트리 포인트는 프로그램의 다양한 기능에 대응하고 있습니다.VMS, PL/I 및 MACRO 프로그램에서는 시스템 전체에서 사용되는 엔트리 포인트를 나타내는 일반적인 방법은 실행 이미지 이름 끝에 달러 기호($)로 구분된 엔트리 포인트를 추가하는 것입니다.directory.exe$make
.
Apple I 컴퓨터도 이것을 어느 정도 사용했습니다.예를 들어, Apple I's BASIC의 대체 엔트리 포인트는 실수로 리셋 버튼을 [clarification needed]눌렀을 때 BASIC 프로그램을 유용하게 유지합니다.
종료점
일반적으로 프로그램은 운영체제로 돌아가거나 크래시함으로써 언제든지 종료할 수 있습니다.인터프리터 언어의 프로그램은 인터프리터에 제어를 되돌리지만 컴파일된 언어의 프로그램은 운영체제로 돌아가야 합니다.그렇지 않으면 프로세서는 프로그램 종료 후에도 계속 실행되기 때문에 정의되지 않은 동작이 발생합니다.
통상, 프로그램에 지정된 종료점은 1개도 없습니다.그러나 다른 경우에는 런타임 자체가 크래쉬하지 않는 한 프로그램이 항상 단일 종료 지점을 통해 구조화된 방식으로 종료되도록 보장합니다.이것에 의해, 다음과 같은 정리 코드를 실행할 수 있습니다.atexit
핸들러이는 메인 함수에서 복귀하거나 특정 종료 함수를 호출하거나 런타임 캡처 예외 또는 운영 체제 신호에 의해 프로그램이 종료되도록 요구함으로써 수행할 수 있습니다.
프로그래밍 언어
많은 프로그래밍 언어에서main
함수는 프로그램의 실행을 시작하는 곳입니다.프로그램 기능의 대략적인 구성을 가능하게 하며, 일반적으로 프로그램이 실행될 때 주어진 명령어 인수에 액세스할 수 있습니다.
메인 함수는 일반적으로 프로그램을 시작할 때 실행되는 최초의 프로그래머에 의해 작성된 함수로 런타임 환경에 포함된 시스템 고유의 초기화(crt0 또는 동등한 것)에서 직접 호출됩니다.그러나 C++ 글로벌 객체의 컨스트럭터 등 일부 언어는 메인 실행 전에 사용자가 작성한 함수를 실행할 수 있습니다.
다른 언어, 특히 많은 인터프리터 언어에서는 프로그램의 첫 번째 문장에서 실행이 시작됩니다.
주 진입점을 정의하는 방법을 설명하는 프로그래밍 언어 목록은 다음과 같습니다.
APL
APL에서는 워크스페이스가 로드되면 "Quad LX"(잠재식) 변수의 내용을 APL식으로 해석하여 실행한다.
C 및 C++
C 및 C++에서 주 함수의 기능 프로토타입은 다음 중 하나와 같습니다.
인트 주된(무효); 인트 주된(); 인트 주된(인트 argc, 차 **argv); 인트 주된(인트 argc, 차 *argv[]); 인트 주된(인트 argc, 차 **argv, 차 **부러워하다); // 더 구체적으로 C에서 // ISO C 표준 5.1.2.1에 따르지 않음 // 단, 내장형 프로그래밍에서는 δC에 따라 이 폼도 사용됩니다. 무효 주된 (무효);
주 함수는 애플리케이션 프로그래머의 진입점(애플리케이션의 진입점 또는 주 진입점)처럼 보입니다.시스템 프로그래밍은 프로그램에 대한 자세한 정보를 표시하고 다른 위치(초기화 절차 또는 독립 실행형 프로그램의 경우 재설정 인터럽트 벡터)에서 진입점을 지정합니다.
파라미터 argc
, 인수 수 및argv
argument [8]vector는 프로그램 명령줄 인수의 수와 값을 각각 제공합니다.이름argc
그리고.argv
는 C에서 유효한 식별자일 수 있지만 이러한 이름을 사용하는 것이 일반적입니다.C++에서는 엄격한 준수가 [9]필요한 경우 이름은 문자 그대로 사용하고 파라미터 리스트 내의 "void"는 생략한다.C++에서는 반환 타입이 항상 다음과 같아야 한다는 점을 제외하고 플랫폼에 의존하는 다른 형식도 C 및 C++ 표준에서 허용됩니다.int
예를 들어 Unix(POSIX.1은 아니지만)와 Windows에는 프로그램 환경을 제공하는 세 번째 인수가 있으며, 그렇지 않으면 를 통해 액세스할 수 있습니다.[10]getenv
에stdlib.h
:
인트 주된(인트 argc, 차 **argv, 차 **환경);
MacOS와 같은 Darwin 기반 운영 체제에는 실행 중인 [11]바이너리 경로와 같은 임의의 OS 제공 정보를 포함하는 네 번째 매개 변수가 있습니다.
인트 주된(인트 argc, 차 **argv, 차 **환경, 차 **사과);
메인 함수에서 반환된 값은 프로세스의 종료 상태가 됩니다.단, C 표준에서는 다음 2개의 값에만 특정 의미가 부여됩니다.EXIT_SUCCESS
(통상 0) 및EXIT_FAILURE
기타 가능한 반환값의 의미는 구현에 정의되어 있습니다.반환값이 프로그래머에 의해 정의되지 않은 경우, 암묵적으로return 0;
의 마지막에main()
함수는 컴파일러에 의해 삽입됩니다.이 동작은 C++ 표준에서 필요합니다.
틀림없이 이다argc
음이 아니고argv[argc]
는 늘 포인터입니다.규칙에 따라 다음 명령어에 의해 지정된 명령줄 인수argc
그리고.argv
프로그램의 이름을 첫 번째 요소로 포함하다argc
0보다 크다.사용자가 명령어를 입력했을 경우,rm file
", 셸이 초기화를 합니다.rm
으로 처리하다.argc = 2
그리고.argv = {"rm", "file", NULL}
.~하듯이argv[0]
에 표시되는 프로세스의 이름입니다.ps
,top
데몬이나 인터프리터 또는 가상 머신 내에서 실행되는 프로그램(예: 데몬)argv[0]
호스트 실행 파일의 이름이 될 수 있음)를 사용하여 argv를 변경하여 보다 알기 쉽게 할 수 있습니다.argv[0]
(통상은,exec
시스템 콜을 실행합니다.
그main()
함수는 특수하며, 일반적으로 모든 C 및 C++ 프로그램은 한 번 정확하게 정의해야 합니다.
선언된 경우main()
외부 링크가 있는 것처럼 선언해야 합니다. 선언할 수 없습니다.static
또는inline
.
C++에서는main()
글로벌 네임스페이스에 있어야 합니다(즉,::main
)는 오버로드 할 수 없습니다.또, 멤버 함수로서도 사용할 수 없습니다.다만, 이름은 특별히 예약되어 있지 않습니다.또, 다른 네임스페이스의 멤버 함수, 클래스, 열거, 또는 비멤버 함수에 사용할 수도 있습니다.C++ (C와 달리)main()
는 재귀적으로 호출할 수 없으며 주소를 가져올 수 없습니다.
C#
C#에 기술된 프로그램을 실행할 때 CLR은 CLR에 의해 마크된 스태틱메서드를 검색합니다..entrypoint
인수 없음 또는 단일 인수 유형의 IL 지시문string[]
반환 타입은 다음과 같습니다.void
또는int
를 [12]실행합니다.
정적인 무효 주된(); 정적인 무효 주된(스트링[] args); 정적인 인트 주된(); 정적인 인트 주된(스트링[] args);
명령줄 인수가 전달됩니다.args
Java에서의 방법과 비슷합니다.버전의 경우Main()
C 및 C++와 유사한 정수를 반환하면 프로세스의 종료 상태로 환경에 반환됩니다.
C#7.1 이후로는 4개의 가능한 엔트리 포인트시그니처가 존재하기 때문에Main()
방법.[13]
정적인 작업 주된() 정적인 작업< >인트> 주된() 정적인 작업 주된(스트링[]) 정적인 작업< >인트> 주된(스트링[])
그Task
그리고.Task<int>
types는 의 비동기 어카운트입니다.void
그리고.int
.
깨끗한
Clean은 그래프 개서를 기반으로 하는 기능적 프로그래밍 언어입니다.초기 노드의 이름은Start
및 종류입니다.*World -> *World
프로그램이 축소 후 결과만 인쇄하는 경우 월드 또는 일부 고정 유형을 변경할 수 있습니다. Start
.
시작 :: *세계 -> *세계 시작 세계 = 기동 ...
또는 더 심플한
시작 :: 스트링 시작 = "안녕, 세상아!"
하나는 실행 파일을 생성하기 위해 사용할 옵션을 컴파일러에 지시합니다.
일반적인 리스프
ANSI Common Lisp는 메인 함수를 정의하지 않고 소스 파일에서 코드를 위에서 아래로 읽고 평가합니다.단, 다음 코드는 주요 기능을 에뮬레이트합니다.
(삭제하다 헬로메인 () (포맷 t '헬로 월드'%")) (헬로메인)
D
D에서 주요 기능의 기능 프로토타입은 다음 중 하나와 같다.
무효 주된(); 무효 주된(스트링[] args); 인트 주된(); 인트 주된(스트링[] args);
명령줄 인수가 전달됩니다.args
C# 또는 Java에서의 방법과 유사합니다.버전의 경우main()
C 및 C++와 유사한 정수를 반환하면 프로세스의 종료 상태로 환경에 반환됩니다.
포트란
FORTRAN에는 메인 서브루틴 또는 기능이 없습니다.대신 a.PROGRAM
스테이트먼트는 아래 그림과 같이 프로그램 단위가 메인 프로그램임을 지정하는 데 사용할 수 있습니다.그PROGRAM
문은 재귀 [14]호출에 사용할 수 없습니다.
프로그램.안녕 인쇄하다 *, "신트!" 종료 프로그램안녕
IBM System/360 및 후속 메인프레임의 버전과 같은 Fortran의 일부 버전은 PROGRAM 문을 지원하지 않습니다.다른 소프트웨어 제조사의 많은 컴파일러에서는 PROGRAM 스테이트먼트 없이 Fortran 프로그램을 컴파일할 수 있습니다.이 경우 SUBROUTINE, FUNCTION 또는 BLOCK DATA 문이 발생하지 않는 비댓글 문이 있는 모듈은 모두 메인 프로그램으로 간주됩니다.
GNAT
GNAT를 사용하여 프로그래머는 다음과 같은 함수를 작성할 필요가 없습니다.main
; 단일 하위 프로그램을 포함하는 소스 파일을 실행 파일로 컴파일할 수 있습니다.그러나 바인더는 패키지를 작성합니다.ada_main
C 스타일의 주요 기능을 포함 및 내보냅니다.
가세요
Go 프로그래밍 언어에서 프로그램 실행은 다음과 같이 시작합니다.main
의 기능package main
패키지 주된 수입품 "fmt" 기능하다 주된() { fmt.인쇄("안녕, 월드!") }
Go에서는 표준 라이브러리 외부에서 인수나 반환 코드에 액세스할 수 없습니다.이러한 정보에는,os.Args
그리고.os.Exit
이 두 가지 모두 각각에 포함되어 있습니다."os"
패키지.
하스켈
Haskell 프로그램에는 이름이 포함되어야 합니다.main
활자의 값에 얽매이다IO t
, 타입에 따라서는t
;[15] 이것은 보통IO ()
.IO
모나드입니다. 순수하게 기능적인 [16]코드의 관점에서 부작용을 정리합니다.그main
value는 프로그램에 의해 수행된 부작용 풀 계산을 나타냅니다.계산 결과는 다음과 같습니다.main
폐기되어 버립니다.main
보통 활자가 있다IO ()
계산 결과 유형이 다음과 같습니다.()
, 유닛 타입에는 정보가 포함되어 있지 않습니다.
주된 :: 입출력 () 주된 = putStrln "안녕, 월드!"
명령줄 인수는 에 제공되지 않습니다.main
; 다음과 같은 다른 IO 액션을 사용하여 Import해야 합니다.System.Environment.getArgs
.
자바
Java 프로그램은 다음 메서드 머리글 중 하나를 [17][18][19][20]가진 클래스의 주 메서드에서 실행을 시작합니다.
일반의 정적인 무효 주된(스트링[] args) 일반의 정적인 무효 주된(스트링... args) 일반의 정적인 무효 주된(스트링 args[])
명령줄 인수가 전달됩니다.args
C 및 C++에서와 같이 이름은 ""main()
"는 특별합니다.Java의 주요 메서드는 직접 값을 반환하지 않지만 다음 명령을 사용하여 값을 전달할 수 있습니다.System.exit()
방법.
C와 달리 프로그램 이름은 에 포함되어 있지 않습니다.args
메인 메서드를 포함하는 클래스의 이름이므로 이미 알고 있습니다.또한 C와 달리 Java의 배열에는 몇 개의 요소가 존재하는지 추적하는 필드가 있기 때문에 인수 수를 포함할 필요가 없습니다.
주 함수는 클래스에 포함되어야 합니다.Java에서는 모든 것이 클래스 내에 포함되어야 하기 때문입니다.예를 들어 Java의 hello world 프로그램은 다음과 같습니다.
일반의 학급 안녕 세계 { 일반의 정적인 무효 주된(스트링[] args) { 시스템..나가..인쇄("안녕, 세상아!"); } }
이 프로그램을 실행하려면 다음 번호로 전화해야 합니다.java HelloWorld
컴파일된 클래스 파일이 있는 디렉토리에서 HelloWorld.class
)가 존재합니다.또는 실행 가능한 JAR 파일은 매니페스트 파일을 사용하여 사용자의 관점에서 파일 시스템에 의존하지 않는 방식으로 진입점을 지정합니다.
로고
FMSLogo에서는 로드 시 절차가 실행되지 않습니다.실행시키려면 다음 코드를 사용해야 합니다.
이름을 붙이다; 부팅 명령어(프린트 [어서오세요] 등) 종료
「명칭」으로 하다.
변수startup
는 액션의 스타트업 리스트에 사용되지만 규칙에 따라 액션을 실행하는 다른 프로시저가 호출됩니다.이 순서는 임의의 이름으로 할 수 있습니다.
OCaml
OCaml에는 없습니다.main
기능.프로그램은 위에서 아래로 평가됩니다.
명령줄 인수는 다음 이름의 배열에서 사용할 수 있습니다.Sys.argv
디폴트로는 종료상태는 0 입니다.
예:
print_endline '헬로 월드'
파스칼
Pascal에서 메인 프로시저는 프로그램의 유일한 이름 없는 블록입니다.파스칼 프로그램은 C, C++, Java 프로그램보다 더 엄격한 상향식 순서로 프로시저와 함수를 정의하기 때문에 메인 프로시저는 보통 프로그램의 마지막 블록입니다.파스칼은 "라는 이름에 특별한 의미는 없습니다.main
" 또는 유사한 이름.
프로그램. 안녕(산출량); 시작한다. 기입하다(안녕, 세상아!); 끝..
명령줄 인수는 에서 카운트됩니다.ParamCount
스트링으로서 액세스 할 수 있습니다.ParamStr(n)
n은 0 ~ 0 입니다.ParamCount
.
유닛 또는 모듈을 지원하는 Pascal 버전에는 모듈 초기화에 사용되는 이름 없는 블록이 각각 포함되어 있을 수도 있습니다.이러한 블록은 메인 프로그램 진입점이 호출되기 전에 실행됩니다.
펄
Perl에는 메인 기능이 없습니다.스테이트먼트는 위에서 아래로 실행됩니다.단,BEGIN
블록은 일반 문보다 먼저 실행됩니다.
명령줄 인수는 특수 배열에서 사용할 수 있습니다.@ARGV
C와 달리@ARGV
에는 프로그램 이름이 포함되어 있지 않습니다.다음은 다음과 같습니다.$0
.
PHP
PHP에는 "메인" 함수가 없습니다.PHP 스크립트의 첫 번째 줄부터 함수 헤더에 의해 캡슐화되지 않은 코드는 보이는 즉시 실행됩니다.
파이크
Pike의 구문은 C 및 C++의 구문과 유사합니다.실행은 다음 시간에 시작됩니다.main
. 그 "argc
변수는 프로그램에 전달된 인수 수를 유지합니다."argv
variable은 프로그램에 전달된 인수와 관련된 값을 유지합니다.
예:
인트 주된(인트 argc, 배열(스트링) argv)
파이썬
Python 프로그램은 스크립트 언어에서 일반적으로 그렇듯이 위에서 아래로 평가됩니다. 입력점은 소스 코드의 시작점입니다.정의는 사용 전에 반드시 사용되어야 하므로 프로그램은 일반적으로 맨 위에 정의, 맨 아래에 실행할 코드(의도 없이)로 구성되어 있습니다. 이는 파스칼과 같은 원패스 컴파일러의 코드와 유사합니다.
또는, 프로그램은 명시적인 것으로 구성될 수 있다.main
프로그램을 직접 실행할 때 실행할 코드를 포함하는 함수이지만, 프로그램을 모듈로 가져오고 함수를 호출하여 호출할 수도 있습니다.이는 내부 변수에 의존하는 다음 관용어로 수행할 수 있습니다.__name__
세팅되어 있다__main__
프로그램이 실행되지만 모듈로 Import되는 경우(이 경우 모듈 이름으로 설정됩니다), 이 구조에는 [21][22][23]다음과 같은 다양한 종류가 있습니다.
수입품 시스템 방어하다 주된(argv): n = 인트(argv[1]) 인쇄물(n + 1) 한다면 __name__ == '_메인__': 시스템.퇴장(주된(시스템.argv))
이 관용어에서는 지정된 엔트리 포인트에 대한 콜이main
는 명시적이며 운영체제와의 상호작용(인수 수신, 콜링시스템 종료)은 라이브러리 콜에 의해 명시적으로 이루어지며 최종적으로 Python 런타임에 의해 처리됩니다.이는 관례에 따라 런타임에 의해 암묵적으로 실행되는 C와 대조됩니다.
QB64
QB64 언어에는 주 함수가 없습니다.함수 내에 없는 코드 또는 서브루틴이 위에서 아래로 먼저 실행됩니다.
인쇄물 "안녕하세요! a ="; a = get Integer(1.8d): 인쇄물 a 기능. get Integer(n ~하듯이 이중으로 하다) get Integer = 인트(n) 끝. 기능.
명령줄 인수(있는 경우)는 COMMAND$ 함수를 사용하여 읽을 수 있습니다.
어둡다 공유했습니다. 커맨드 라인 ~하듯이 스트링 커맨드 라인 = 명령어 '공백으로 구분된 여러 명령줄 인수를 COMMAND$(n)를 사용하여 읽을 수 있습니다. 명령줄 1 = 명령어(2)
루비
루비에는 뚜렷한 주요 기능이 없습니다.대신, 코드 작성은 다른 것들과 다릅니다.class .. end
또는module .. end
스코프는 특별한 "의 컨텍스트에서 실행됩니다.main
오브젝트이 오브젝트는 다음 방법으로 액세스 할 수 있습니다.self
:
irb(메인):001:0>자신 => 메인
다음과 같은 속성이 있습니다.
irb(메인):002:0>자신.학급 => 오브젝트 irb(메인):003:0>자신.학급.조상 => [개체, 커널, Basic Object]
외부에서 정의된 메서드class
또는module
scope는 "의 프라이빗 메서드로 정의됩니다.main
오브젝트'수업 때부터'main
"는Object
이러한 메서드는 거의 모든 오브젝트의 프라이빗 메서드가 됩니다.
irb(메인):004:0>방어하다 후우 irb(메인):005:1> 42 irb(메인):006:1>끝. => 없음 irb(메인):007:0>후우 =>42 irb(메인):008:0>[].후우 NoMethodError: []에 대해 개인 메서드 'foo'가 호출되었습니다.어레이 송신원(irb): 8 /usr/bin/irb:12에서: <main>으로 irb(메인):009:0 >거짓의.후우 NoMethodError: 개인 메서드 'foo'가 false를 호출했습니다.False 클래스 시작(irb): 9 /usr/bin/irb:12에서: <main>으로
명령줄 인수의 수와 값은 다음 명령을 사용하여 확인할 수 있습니다.ARGV
상수 배열:
$ irb / dev / tty foo bar tty ( main ) : 001 : 0 > ARGV ARV => [ foo , " bar " tty ( main ) 002 : 0 > ARGV . size ARV . size => 2
의 첫 번째 요소ARGV
,ARGV[0]
에는 C와 같이 실행되는 프로그램의 이름이 아닌 첫 번째 명령줄 인수가 포함되어 있습니다.프로그램 이름은 다음을 사용하여 사용할 수 있습니다.$0
또는$PROGRAM_NAME
를 클릭합니다.[24]
Python과 마찬가지로 다음을 사용할 수 있습니다.
한다면 __FILE__ == $PROGRAM_NAME # 여기에 '메인' 코드 입력 끝.
파일이 지정된 경우에만 코드를 실행합니다.ruby
호출.
녹
Rust에서 프로그램의 진입점은 다음과 같은 함수입니다.main
일반적으로 이 함수는 라는 파일에 있습니다.main.rs
또는lib.rs
.
// 'main.rs'에서 fn 주된() { 프린트!("안녕, 월드!"); }
또한, Rust 1.26.0 이후, 메인 함수는 다음을 반환할 수 있습니다.Result
다음과 같습니다.[25]
fn main() -> 결과 <(), std::io:: Error > { println ! ( " )Hello, World!"); Ok() // 내용 '()'과 함께 값 'Ok'의 유형 'Result'를 반환합니다. 즉, 빈 태플입니다.}
재빠르다
Xcode Playground에서 [26]실행되면 Swift는 스크립트 언어처럼 동작하며 위에서 아래로 문장을 실행합니다. 최상위 코드는 허용됩니다.
// HelloWorld.playground 허락하다 안녕 = "안녕하세요" 허락하다 세계 = "세계" 허락하다 안녕 세계 = 안녕 + " " + 세계 인쇄물(안녕 세계) // hello world
Swift로 작성된 코코아 기반 및 코코아 터치 기반 애플리케이션은 보통 다음과 같이 초기화됩니다.@NSApplicationMain
그리고.@UIApplicationMain
각 속성을 지정합니다.이러한 속성은 그 목적에 있어서main.m
Objective-C 프로젝트의 파일: 이들은 암묵적으로main
호출하는 함수UIApplicationMain(_:_:_:_:)
[27] 그 때문에, 의 인스턴스가 생성됩니다.UIApplication
다음 코드는 Coco Touch 기반 iOS 앱을 초기화하고 애플리케이션 위임자를 선언하는 기본 방법입니다.[28]
// AppDelegate.swift 수입품 UIKit @UIApplication Main 학급 AppDelegate: UIResponder, UIApplication 위임 { 변화하다 윈도: UI 윈도? 기능하다 어플(_ 어플: UIA 복제, did Finish Launching With Options(옵션 포함) launch 옵션: [UIA 복제.Launch: 조금도]?) -> 불 { 돌아가다 진실의 } }
비주얼 베이직
Visual Basic에서 프로젝트에 양식이 없는 경우 시작 개체는Main()
절차.그Command$
선택적으로 함수를 사용하여 프로그램 부팅에 사용되는 명령줄의 인수 부분에 액세스할 수 있습니다.
후보선수 주된() 디버깅.인쇄 '헬로 월드' 메시지 박스 다음과 같은 주장이 있는 경우: & 명령어 $ 끝. 후보선수
조조
Xojo에는 각각 다른 주요 진입점을 가진 두 가지 프로젝트 유형이 있습니다.데스크톱(GUI) 애플리케이션은App.Open
프로젝트 이벤트Application
물건.콘솔 어플리케이션은App.Run
프로젝트 이벤트ConsoleApplication
물건.두 경우 모두 주 함수는 자동으로 생성되며 프로젝트에서 제거할 수 없습니다.
「 」를 참조해 주세요.
레퍼런스
- ^ "In Computing, what is an Entry Point? (with picture)". wiseGEEK. Retrieved 2020-01-22.
- ^ Decker, Karsten M.; Rehmann, René M. (1994). Programming Environments for Massively Parallel Distributed Systems: Working Conference of the Ifip Wg 10.3, April 25-29, 1994. Springer Science & Business Media. ISBN 978-3-7643-5090-1.
- ^ "Main Method in C#". GeeksforGeeks. 2018-11-30. Retrieved 2020-01-22.
- ^ Wagner, Bill (2017-08-01). "Main() / Entry Points (C# Programming Guide) - Microsoft Developer Network". docs.microsoft.com. Retrieved 2018-12-03.
- ^ "The main() function". ibm.com. IBM. Retrieved 2014-05-08.
- ^ "Main() and Command-Line Arguments (C# Programming Guide)". Msdn.microsoft.com. Retrieved 2014-05-08.
- ^ "Application Fundamentals". Android Development. linuxtopia.org. Retrieved 2014-02-19.
- ^ argv: 이 변수 이름의 벡터 용어는 전통적인 의미로 문자열을 나타내기 위해 사용됩니다.
- ^ 메인 파라미터 유형 및 이름
- ^ 섹션 3.6.1.2, Standard C++ 2011년판.
- ^ "The
char *apple
Argument Vector". Archived from the original on 2015-12-22. Retrieved 2014-05-12. - ^ "Console Applications in .NET, or Teaching a New Dog Old Tricks". Msdn.microsoft.com. 2003-06-12. Archived from the original on 2008-02-04. Retrieved 2013-08-19.
- ^ "The official repo for the design of the C# programming language: Dotnet/Csharplang". 2019-08-26.
- ^ XL FORTRAN for AIX.언어 레퍼런스제3판, 1994년IBM
- ^ "The Haskell 98 Report: Modules". Haskell.org. Retrieved 2013-08-19.
- ^ Haskell의 오해: Idiomatic Code, Pure, Lattery 및 IO - Haskell의 monadic IO >
- ^ "The Java Language Environment". Oracle. Retrieved 2020-03-14.
Within the HelloWorld class, we declare a single method called main() which in turn contains a single method invocation to display the string "Hello world!" on the standard output. The statement that prints "Hello world!" does so by invoking the println method of the out object. The out object is a class variable in the System class that performs output operations on files.
- ^ Schildt, Herbert (2019). Java : a beginner's guide. New York: McGraw-Hill Education. p. 46. ISBN 978-1-260-44022-5. OCLC 1061561931.
//A JAVA program begins with a call to main ().
- ^ "Hello, World! - Free Interactive Java Tutorial". Learn Java. Retrieved 2020-03-14.
In Java, every line of code that can actually run needs to be inside a class. "public class Main {}" declares a class named Main, which is public, that means that any other class can access it.
- ^ "Hello, World! - Free Interactive Java Tutorial". Learn Java. Retrieved 2020-03-14.
"public static void main(String[] args) {} " is the entry point of our Java program. the main method has to have this exact signature in order to be able to run our program.
- ^ Guido van Rossum (May 15, 2003). "Python main() functions", comments
{{cite web}}
:외부 링크
(도움말)CS1 유지보수: 포스트스크립트(링크)postscript=
- ^ Pythonista와 같은 코드: 모듈로 사용되는 Python 스크립트에서 Wayback Machine의 Idiomatic Python Archived 2014-05-27
- ^ Ned Batchelder (6 June 2003). "Python main() functions".
- ^ 루비 프로그래밍: Ruby에 관한 실용 프로그래머 가이드, Ruby와 그 세계
ARGV
- ^ "Releases.md". GitHub Rust. Retrieved 15 February 2019.
- ^ 스위프트 프로그래밍 언어를 배우기 위해 애플이 개발한 iPad 앱인 Swift Playgrounds와 혼동하지 마십시오.
- ^ "UIApplicationMain(_:_:_:_:) — UIKit". Apple Developer Documentation. Retrieved 2019-01-12.
- ^ "UIApplication — UIKit". Apple Developer Documentation. Retrieved 2019-01-12.