※ 공부 / 복습 메모 일지
※ 해당 일지에서 알고 있는 부분들은 간단히 정리 및 생략하여 넘어가는 내용으로 구성
<참고한 자료>
C++ 01.09 - 전방 선언과 정의 (forward declarations and definitions)
01.09 - 전방 선언과 정의 (forward declarations and definitions) add.cpp 라는 샘플 프로그램을 보자. #include int main() { std::cout << "The sum of 3 and 4 is: " << add(3, 4) << std::endl; return 0; }..
boycoding.tistory.com
C++ 01.10 - 헤더 파일 (header file)
01.10 - 헤더 파일 (Header file) .cpp 확장자를 가진 코드 파일은 C++ 프로그램의 유일한 파일이 아니다. 다른 유형의 파일을 헤더 파일(header file)이라고 한다. 헤더 파일은 보통 .h 확장자를 가지며, 다
boycoding.tistory.com
C++ 01.11 - 전처리기 (preprocesser)
01.11 - 전처리기 (preprocesser) 전처리기(preprocessor)는 프로그램을 컴파일할 때 컴파일 직전에 실행되는 별도의 프로그램이다. 전처리기가 실행되면 각 코드 파일에서 지시자(directives)를 찾는다. 지
boycoding.tistory.com
C++ 01.12 - 헤더 가드 (header guard)
01.12 - 헤더 가드 (header guard) 중복 정의 문제 식별자는 하나의 정의만 가질 수 있다. 따라서 변수 식별자를 두 번 이상 정의한 프로그램은 오류가 발생한다. int main() { int x; // 식별자 x에 대한 정의
boycoding.tistory.com
C++ 01.13 - 여러 가지 변수 초기화 방법 (variable initialization)
01.13 - 여러 가지 변수 초기화 방법 (variable initialization) 변수가 정의될 때, 즉시 해당 변수에 값을 지정할 수 있다. 이를 변수 초기화(variable initialization) 또는 짧게 초기화(initialization)라고 한..
boycoding.tistory.com
전방 선언과 정의 (forward declarations and definitions)
- 컴파일러는 소스코드를 순차적으로 읽음
- 식별자를 정의하기 전에 식별자의 존재를 컴파일러에게 미리 알리는 것
- 함수 원형 선언과 정의라고도 함
그래서 원래 코드를 작성할 경우에는
근데 이렇게 작성하면 프로그램의 규모가 커질수록 함수의 호출 순서, 구조 등의 파악이 어려워지고 복잡해지며 유지보수에도 문제도 생긴다.
그래서 전방 선언을 통해 컴파일러에게 미리 식별자가 있다고 알릴 수 있다.
※ 정의와 선언에 대해서 확실히 이해하고 싶다면 참고자료를 확인
헤더 파일 (Header file)
- .h 확장자를 가지고 있음
- 다른 파일 (.cpp) 에 대한 선언을 가지고 있음
- <> 는 컴파일러와 함께 제공되는 헤더 파일을, "" 는 소스파일이 있는 경로에서 헤더 파일을 include 함
- include 하도록 전처리기에게 지시함
흔히 강좌들에서 사용되는 헤더 파일인 iostream 은 입출력 등의 기본적인 함수를 사용하기 위해서 include 하는데,
해당 헤더 파일 안에 함수의 내용이 선언이 되어있기 때문에 헤더 파일 (.h) 안에 있는 내용을 코드 파일 (.cpp) 에서 사용할 수 있다.
iostream 은 표준 라이브러리 헤더 파일이기 때문에 컴파일 이후에 링크 단계에서 자동으로 C++ 런타임 지원 라이브러리로 구현된다.
만약에 필요한 함수가 헤더 파일에 없다면 직접 만들 수도 있다.
※ 직접 만드는 부분은 먼저 위에서 설명했던 전방 선언 내용을 알아두면 좋다.
※ 자세한 내용은 참고 자료 확인
전처리기 (preprocesser)
- 프로그램 컴파일 직전에 실행되는 별도의 프로그램
- 각 코드 파일에서 지시자 (directives) 를 찾음
- 지시자 : # 으로 시작하여 줄 바꿈으로 끝나는 코드
- 주로 텍스트를 치환하거나 디버깅에 도움을 줌
※ 대체 텍스트와 조건부 컴파일은 꽤 유용하게 쓰인다.
※ 자세한 내용은 참고 자료 확인
헤더 가드 (header guard)
- 식별자 및 함수에 대한 중복 정의 문제를 해결할 수 있는 메커니즘
- 한 헤더 파일이 아닌 중복되는 헤더 파일마다 선언을 해줘야 한다.
코드를 작성하다가 a 헤더와 b 헤더를 사용해야하는 일이 생겼다고 해보자.
그런데 a 헤더와 b 헤더에 똑같은 함수, 예시로 Add() 라는 동일한 내용의 함수가 각각 선언되어있다고 한다면
중복 선언이 되므로 오류가 발생할 수 있다.
혹시나 참고 자료를 볼 때 아래의 내용과 같이 보는 게 좋을 것 같다.
(전처리기의 조건부 컴파일 지시문 내용과 동일하다)
#ifndef : if not definite 만약 정의되지 않았다면
#define : 정의하라
#endif : 끝
※ 지시문에 사용하는 매크로 이름은 중요하다.
※ Visual Studio 에서는 헤더 가드를 #program once 로 생성한다.
※ 자세한 내용은 참고 자료 확인
여러 가지 변수 초기화 방법 (variable initialization)
- 기본적으로는 변수가 정의될 때, 즉시 해당 변수에 값을 지정 가능
※ 이외에 유니폼 초기화에 대한 내용은 참고 자료 확인
'C++' 카테고리의 다른 글
[C++] 2-1. 자료형, 변수 정의, void, 변수 크기, sizeof 연산자 (0) | 2021.04.03 |
---|---|
[C++] 1-4. 지역 범위, 연산자 (0) | 2021.03.22 |
[C++] 1-3. 함수의 매개 변수, 인수 / 키워드와 식별자 (0) | 2021.03.14 |
[C++] 1-2. 입출력과 함수, 반환 값 (0) | 2021.03.12 |
[C++] 1-1. 프로그램의 구조와 변수, 초기화 및 할당 (0) | 2021.03.12 |
댓글