C & C++ 2

C/C++ 개념: 전방 선언(forward declaration)

전방 선언(forward declaration) 1. 설명 함수나, 구조체, 열거자, 공용자, 외부(extern) 변수 (C++ 에서는 클래스도) 등을 그 실제 구현(implementation) 시점보다 앞서서 선언(declare)만 하는 것을 말합니다. 물론, 구현부와 선언부의 서명(signature)은 일치해야 합니다. 서로를 호출하는 함수, 외부(extern) 변수, PImple 기법 등에서 사용됩니다. 헤더와 소스 파일로 구현부, 선언부를 분리하는 행위는 기본적으로 모두 전방 선언에 속합니다. ※ main 함수보다 아래에서 구현된 함수를 호출할 때도 main 위에서 해당 함수를 전방 선언해야 합니다. 하지만 이런 케이스는 그냥 해당 함수를 main 위로 옮기면 되는 거라(원래는 다른 헤더 파일로 ..

C/C++ 개념: 완전한 타입(Complete Type), 불완전한 타입(Incomplete Type)

완전한 타입(Complete Type), 불완전한 타입(Incomplete Type) 1. 설명 완전한 타입이란, 해당 컴파일 시점에서 그 타입(구조체(struct), 열거자(enum), 공용체(union), 클래스(class))의 구현(Implement) 정보를 모두 알고 있는 타입을 말합니다. 위 4가지를 제외한 모든 타입은 무조건 완전한 타입입니다. 불완전한 타입이란, 해당 컴파일 시점에서 그 타입의 구현 정보를 알지 못하고, 선언된 정보만 알고 있는 상태를 말합니다. ※ 타입의 어떠한 정보도 알지 못하는건 그냥 알수 없는 타입(unknown type)이나 알수 없는 식별자(unknown identifier) 입니다. 보통 실수로 헤더를 넣지 않거나 했을 때 생깁니다. 2. 예시 #include s..