선언(컴퓨터 프로그래밍)
Declaration (computer programming)![]() |
컴퓨터 프로그래밍에서 선언은 식별자 속성을 지정하는 언어 구조입니다. 즉, 단어의 (식별자의)[1] 의미를 선언합니다.선언은 함수, 변수, 상수 및 클래스에 가장 일반적으로 사용되지만 열거 및 유형 [1]정의와 같은 다른 엔티티에도 사용할 수 있습니다.이름(식별자 자체)과 엔티티의 종류(함수, 변수 등) 외에 선언에서는 일반적으로 데이터 유형(변수 및 상수) 또는 유형 서명(함수)이 지정됩니다. 유형에는 배열 등의 치수가 포함될 수도 있습니다.선언은 엔티티의 존재를 컴파일러에 알리기 위해 사용됩니다.이것은 함수, 변수 및 상수와 그 유형을 사용하기 전에 선언으로 지정해야 하는 강력한 유형의 언어에서 중요합니다.또한 포워드 [2]선언에 사용됩니다."선언"이라는 용어는 "정의"[1]라는 용어와 자주 대조되지만, 의미와 용법은 언어마다 크게 다릅니다. 아래를 참조하십시오.
선언은 BCPL 계열, 가장 두드러지는 C와 C++, 그리고 파스칼을 포함한 ALGOL 전통 언어에서 특히 두드러집니다.Java는 별도의 선언과 정의를 필요로 하지 않지만 "선언"이라는 용어를 사용합니다.
선언과 정의
기본적인 이분법 중 하나는 선언에 정의가 포함되어 있는지 여부입니다.예를 들어 변수 또는 상수 선언이 값을 지정하는지, 유형만 지정하는지, 함수의 선언이 함수의 본문(실장)을 지정하는지, 또는 해당 유형의 [1]시그니처만 지정하는지 등입니다.모든 언어가 이러한 구별을 하는 것은 아닙니다.많은 언어에서 선언은 항상 정의를 포함하며 언어에 따라 "[a]선언" 또는 "정의"로 언급될 수 있습니다.단, 이러한 개념은 사용하기 전에 선언을 필요로 하는 언어(포워드 선언이 사용되는 언어) 및 인터페이스와 구현이 분리된 언어(인터페이스에 선언이 포함되어 있고 구현에 [b]정의가 포함되어 있음)로 구분됩니다.
비공식 용법에서 "선언"은 순수한 선언(유형만, 값이나 본문 없음)만을 참조하는 반면, "정의"는 값이나 본문을 포함하는 선언을 참조합니다.그러나 공식 용법(언어 사양)에서 "선언"은 이 두 가지 의미를 모두 포함하며, 언어에 따라 더 세밀하게 구별됩니다. C와 C++에서는 본체를 포함하지 않는 함수의 선언을 함수 프로토타입이라고 하는 반면, 본체를 포함하지 않는 함수의 선언을 "함수 정의"라고 합니다.Java에서는 선언은 두 가지 형식으로 이루어집니다.퍼블릭 메서드의 경우 메서드 이름, 입력 유형 및 출력 유형으로 구성된 메서드 시그니처로 인터페이스에 표시할 수 있습니다.정의를 포함하지 않는 추상 메서드의 정의에도 유사한 표기를 사용할 수 있습니다.엔클로징 클래스는 인스턴스화할 수 있지만 메서드의 정의를 제공하는 새로운 파생 클래스를 생성하여 클래스의 인스턴스를 만들어야 합니다.Java 8부터는 함수의 선언으로 볼 수 있는 언어에 람다 표현이 포함되었습니다.
선언 및 정의
프로그래밍 언어의 C 패밀리에서 선언은 종종 헤더 파일로 수집되며, 이러한 선언을 참조하고 사용하는 다른 소스 파일에 포함되지만 정의에 액세스할 수 없습니다.헤더 파일의 정보는 선언을 사용하는 코드와 선언을 정의하는 코드 간의 인터페이스(정보 숨김 형식)를 제공합니다.선언은 종종 다른 소스 파일 또는 라이브러리에서 정의된 함수 또는 변수에 액세스하기 위해 사용됩니다.정의 유형과 선언 유형이 일치하지 않으면 컴파일러 오류가 발생합니다.
변수의 경우 정의에서는 선언 단계 중에 예약된 메모리 영역에 값을 할당합니다.함수의 경우 정의가 함수 본체를 제공합니다.변수 또는 함수는 여러 번 선언될 수 있지만 일반적으로 한 번 정의됩니다(C++에서는 이를 One Definition Rule(ODR; 원 정의 규칙)
JavaScript 또는 Python과 같은 동적 언어는 일반적으로 함수를 재정의할 수 있습니다. 즉, 함수는 이름과 값(정의)을 가진 다른 변수와 거의 유사합니다.
C에서는 정의가 아닌 선언의 예를 몇 가지 나타냅니다.
외부 차 예1; 외부 인트 예2; 무효 예3(무효);
다음으로 C에 정의되어 있는 선언의 예를 제시하겠습니다.
차 예1; /* 함수 정의 외부에서 0으로 초기화됩니다.*/ 인트 예2 = 5; 무효 예3(무효) { /* 중괄호 사이의 정의 */ }
정의되지 않은 변수
일부 프로그래밍 언어에서는 이러한 변수가 컴파일 시에 처음 마주칠 때 암묵적인 선언이 제공된다.다른 언어에서는 이러한 사용은 오류로 간주되며 진단 메시지가 나타날 수 있습니다.일부 언어는 암묵적인 선언 동작으로 시작되었지만 성숙함에 따라 이를 비활성화하는 옵션이 제공되었습니다(Perl의 " " 등).use strict
또는 Visual Basic의Option Explicit
").
「 」를 참조해 주세요.
메모들
레퍼런스
- ^ a b c d 선언은 식별자 집합의 해석과 속성을 지정합니다.식별자의 정의는 다음과 같은 식별자에 대한 선언입니다.
- 오브젝트[예약 또는 상수]에 대해 해당 오브젝트에 대해 스토리지를 예약합니다.
- 기능의 경우 기능 본체를 포함한다.
- 열거 상수의 경우, 는 식별자의 (유일한) 선언이다.
- typedef 이름의 경우, 는 식별자의 첫 번째(또는 유일한) 선언입니다."
- ^ Mike Banahan. "2.5. Declaration of variables". GBdirect. Retrieved 2011-06-08.
[A] declaration [...] introduces just the name and type of something but allocates no storage[...].
- ^ 7. 복합문, Python Language Reference