[C++] 전처리 지시문(Preprocessor directives)

Learning 

When: 1학년 11월 9일

 

How: 

#include에 대해 배웠는데 작동 방식을 까먹어서 복습할 겸 빌드 과정을 글로 썼고, 빌드 과정을 쓰고 나니 전처리 과정에서 #if, #else 같은 전처리 지시문들이 실행된다는 것을 알아 이것들에 대해 간단히 쓰게 되었습니다.

 

Understanding:

  • 간단 설명: 전처리 지시문은 전처리 과정에서 전처리기가 해야 할 일을 적어놓은 문장입니다.
    예를 들어 #include<iostream>이라는 문장은 전처리할 때 iostream이라는 헤더파일을 불러오라는 명령입니다.
    그럼, 전처리기가 iostream이라는 헤더 파일을 찾아서 그 자리에 복사, 붙여넣기 같은 작업을 해주는데,
    이와 같이 컴파일을 하며 소스 코드를 어셈블리어로 바꾸기 전에 소스 코드를 정상화하는 작업을
    전처리라고 하고, 전처리 지시문은 말 그대로 전처리를 할 때 전처리기에게 지시할 문장입니다.
    참고로 #if 계열에서 5.5 같은 부동 소수점 형식은 검사할 수 없습니다.
#define #define GRAVITY, #define GRAVITY 9.8 include는 방금 예시를 들며 설명했듯 헤더 파일을 불러오라는 명령입니다.
#include #include<iostream> 방금 예시를 들며 설명했듯 헤더 파일을 불러오라는 명령입니다.
#ifdef #ifdef GRAVITY 방금 설명한 define으로 지정된 매크로가 있는지 검사하여 있다면 바로 아래의 줄부터 #endif를 만날 때 까지의 코드를 컴파일하고, 없다면 컴파일하지 않습니다.
#ifndef #ifndef GRAVITY define으로 지정된 매크로가 없다면 코드를 컴파일합니다.
#if #if GRAVITY == 9.8 조건식이 맞을 때만 코드를 컴파일합니다.
#elif #elif GRAVITY == 1.63 if 아래에서 if문이 참이 아닐 때 다시 한번 조건식을 검사하여 참이라면 코드를 컴파일합니다.
#else #else if문 맨 아래에서 모든 조건문이 참이 아니라면 코드를 컴파일합니다.
#endif #endif #if 계열의 코드 맨 아래에서 컴파일 여부를 정하는 범위를 끝냅니다.
#error #define VERSION
#if VERSION == 1
#error "버전이 1입니다."
#endif
오류를 발생시켜 빌드를 끝냅니다.
#pragma #pragma once 전처리기에게 특별한 명령을 전달합니다. 왼쪽의 코드는 이 헤더 파일을 중복해서 불러올 수 없게 하는 명령입니다.

 

Result: 확실히 C++을 배우니 C#을 쓸 때 공부할 수 있었지만 배우지 않은 심화 내용을 공부할 수 있게 되어 좋은 것 같습니다.

'C++' 카테고리의 다른 글

[C++] 포인터, delete  (0) 2025.12.01
[C++] 입력과 출력  (0) 2025.11.14
[C++] signed, unsigned 키워드, 2의 보수  (0) 2025.11.13
[C++] class와 struct (C# 하던 사람 관점)  (0) 2025.11.10
[C++] 빌드 (Build)  (0) 2025.11.08