• 1.7.1 선언(Declaration)과 정의(Definition)
  • 1.7.2 헤더(Header) 파일 만들기
  • 1.7.3 Peek Definition
  • 1.7.4 Close All But This

1.7.1 선언(Declaration)과 정의(Definition)

 

만드는 프로그램이 커질수록 중요해지는 개념이 바로 선언과 정의이다. 컴파일러는 주어진 코드를 순차적으로 읽기 때문에 사용하고자 하는 함수에 대해 미리 알고 있어야 한다. 다음의 예시를 보자.

 

identifier not found

분명 눈으로 보기에는 add 함수와 subtract 함수가 main 함수 아래에 존재하지만 컴파일러는 identifier not found라는 에러를 출력하며 해당 함수들을 찾지 못하고 있다. 앞에서 이야기했듯이 컴파일러는 순차적으로 코드를 읽기 때문에 main 함수에 진입하였을 때, add 함수와 subtract 함수가 무엇인지 알 수 없었고 에러를 출력한 것이다.

 

많은 사람들이 처음에는 이러한 컴파일 에러를 넘어가기 위해서 main 함수 위에 add 함수와 subtract 함수를 옮겨서 해결하는데, 프로그램을 계속 만들다 보면 사용하는 함수들이 커져가기 마련이다. 함수를 옮기지 않고 해결하는 방법이 바로 선언을 사용하는 것이다.

 

Forward Declaration

위처럼 함수의 최소한의 정보(입력과 출력에 대한 자료형)를 가지고 작성해주는 것이 선언이며, main 함수 뒤에 정의를 두고서 main 함수 앞에 선언을 하는 경우 전방 선언이라고도 한다. 정의는 말그대로 함수가 어떤 작동을 하는지 코드로 작성한 것을 말한다.


1.7.2 헤더(Header) 파일 만들기

 

앞에서는 전방 선언을 통해서 main 함수가 사용할 함수가 무엇인지 컴파일러에게 미리 알려주는 방식을 택하였다. 하지만 이러한 방법도 다루는 함수가 양이 많아질 경우 위아래로 스크롤을 많이 움직이는 비효율적인 작업을 하게 된다. 이를 해결하기 위해 함수의 정의와 선언에 대해 개별적으로 파일을 만들고 main 함수가 담긴 파일이 헤더 파일을 include하는 방식을 사용한다.

Header files and source files

add라는 함수를 예시로 사용하기 위해 위처럼 파일을 만든다. Header Files 폴더에 함수의 선언을 담을 헤더 파일을 생성하고 Source Files 폴더에는 함수의 정의를 담을 cpp 파일을 만들었다.

 

add.h

헤더 파일을 생성하는 경우 자동으로 #pragma once라는 헤더 가드 전처리기가 생성된다. 파일에는 add 함수의 선언만 작성하였다.

 

add.cpp

cpp 파일에는 add 함수의 정의를 작성하였다.

 

main 함수가 담긴 파일

main 함수가 담긴 파일은 #include 전처리기를 통하여 add.h를 추가해준다.  이를 통해 전방 선언과 똑같은 효과를 가져올 수가 있다. 만약 Header Files 폴더가 아닌 새 폴더에 헤더 파일을 만들어서 관리하는 경우 해당 폴더의 절대 경로를 "" 사이에 넣어줘야한다.


1.7.3 Peek Definition

 

위처럼 선언과 정의가 파일 자체로 분리가 되고 많은 함수를 만들어서 다루다 보면 해당 함수가 사용되는 부분에서 이게 무슨 함수인지를 보고 싶은 경우가 생길 것이다. 정의 파일로 직접 가서 볼 수도 있지만 사용되는 곳에서 바로 볼 수도 있다.

 

Peek Definition

Peek Definition 기능을 사용하면 아래와 같이 사용하는 곳에서 함수의 정의를 빠르게 볼 수 있다.

 

Definitions

예시의 경우 add 함수가 총 세 곳에 정의되어 있었다. add.cpp를 제외한 모든 파일은 빌드에서 제외된 상태였으므로 위처럼 존재해도 실행하는 것에는 지장이 없었다.


1.7.4 Close All But This

 

Peek Definition만큼 유용한 기능이 Close All But This이다.

 

Close All But This

현재 캡처에는 총 4개의 파일이 열려 있는데, 다루는 파일이 많아질수록 지저분하게 많은 파일을 열게 된다. 이를 한 번에 닫아주고 내가 보고 있는 파일만 남기는 기능이 바로 Close All But This이다.

 

After Close All But This

 

 

+ Recent posts