보이드형
Void type보이드 유형은 C와 Algol68에서 파생된 여러 프로그래밍 언어로, 정상적으로 반환되지만 호출자에게 결과 값을 제공하지 않는 함수의 결과 유형이다. 일반적으로 그러한 기능은 일부 작업을 수행하거나 출력 파라미터에 쓰는 것과 같은 부작용에 대해 호출된다. 그러한 맥락에서 보이드 유형의 사용은 Visual Basic에서 서브루틴을 정의하는 Pascal 및 구문구조의 절차와 비교 가능하다. 기능 프로그래밍 언어와 유형 이론에 사용되는 단위 유형과도 유사하다. 장치 유형#을 참조하십시오.비교를 위한 프로그래밍 언어.
또한 C와 C++는 보이드 유형에 대한 포인터를 지원한다(지정: void *
() 그러나 이것은 관련이 없는 개념이다. 이 유형의 변수는 지정되지 않은 유형의 데이터에 대한 포인터이므로 이 맥락에서(다른 변수는 제외) void *
범용이나 상형처럼 거칠게 행동하다 프로그램은 정보를 잃지 않고 포인터를 임의의 데이터 유형(기능 포인터 제외)으로 빈드로 변환하고 원래 유형으로 되돌릴 수 있으며, 이는 이러한 포인터를 다형 함수에 유용하게 만든다. C 언어 표준은 서로 다른 포인터 유형이 동일한 크기나 정렬을 보장하지는 않는다.
C 및 C++인 경우
무효 결과 유형이 있는 함수는 함수의 끝에 도달하거나 반환 값이 없는 반환문을 실행함으로써 종료된다. 보이드 형식은 함수에서 인수를 하지 않는다는 것을 나타내기 위해 함수 프로토타입의 유일한 주장으로 나타날 수도 있다. 이러한 모든 상황에서 이름에도 불구하고 보이드 유형은 0형이나 하단형("void type"이라고도 함)이 아니라 단위형("void type"이라고 함)으로 기능하는데, 비록 싱글톤인 실제 단위형과는 달리 보이드형은 그 가치를 나타낼 수 있는 방법이 부족하고 언어는 어떤 대상을 선언할 수 있는 방법을 제공하지 않는다. 또는 값을 유형으로 나타냄 void
.
C의 초기 버전에서는 특정 결과가 없는 함수가 기본적으로 int
인수가 없는 함수는 단순히 빈 인수 목록을 가지고 있었다. 유형화되지 않은 데이터에 대한 포인터는 다음 항목의 정수 또는 포인터로 선언되었다. char
일부 초기 C 컴파일러는 기능의 반환 값을 사용하지 않은 함수 호출에 경고를 발생시키는 기능을 가지고 있었다. 오래된 코드는 때때로 이러한 경고를 억제하기 위해 그러한 함수 호출을 무효로 한다. Bjarne Strustrup이 1979–1980년에 C++에 대한 연구를 시작했을 때,[citation needed] 보이드와 보이드 포인터는 AT&T에서 유래한 컴파일러들이 지지하는 C 언어 방언의 일부였다.[1]
함수 프로토타입에서 보이드의 명시적 사용 대 논거 없음은 다음 표에 자세히 설명된 바와 같이 C와 C++에서 다른 의미론을 가진다.[2]
C | C++ 등가물 |
---|---|
void f(void); | void f(); (iii)void f(void); |
void f(); (상수지만 알 수 없는 수의 인수) | template <typename... Ts> void f(Ts... ts) {} (정확히 동등한 것은 아님) |
예를 들어, 인수가 없는 C 프로토타입. void f()
그러나,[3] 위는 C99에서 더 이상 사용되지 않았다.
인 하스켈
C++와는 상당히 반대로, 기능 프로그래밍 언어 하스켈에서 보이드 타입은 거주자가 없는 빈 타입을 나타낸다[1]. 보이드 유형의 함수는 결과를 반환하지 않으며, 유형 서명이 있는 부작용 프로그램 IO Void
종료하거나 충돌하지 않는다. 특히 보이드형에는 총함수가 없다.
참조
- ^ Ritchie, Dennis M. (1993). "The Development of the C Language". Association for Computing Machinery, Inc. via the author and Lucent Technologies Inc. 1996. Archived from the original on 1998-02-20.
- ^ Stroustrup, Bjarne (2009). Programming: Principles and Practice Using C++. Boston: Addison-Wesley. p. 996. ISBN 0-321-54372-6.
- ^ Bjarne Strustrup, C 및 C++: 호환성 사례 연구 조정 가능한 차이점? 당신이 결정하시오, Dobb's 박사님 2002년 9월 1일; 인쇄판