Nagie's DevStory

[C] 40. 전처리 지시문 이란? 본문

Programming/C

[C] 40. 전처리 지시문 이란?

Nagie 2023. 10. 7. 17:27
728x90

C 프로그래밍에서 전처리 지시문은 코드를 컴파일하기 전 미리 처리되는 일종의 명령문이다.

이러한 지시문은 코드의 특정 부분을 변경하거나 코드의 특정 부분을 제어하는 데 사용된다.

 

#include는 다른 헤더 파일을 현재 소스 파일에 포함하는 역할을 하며

소스 코드 재사용을 위해 많이 사용하는 전처리 지시문이다.

 

#include <stdio.h> // 표준 입출력 헤더의 기능들을 해당 소스코드에서 사용할 수 있게 포함

 

#define은 매크로를 정의하며 해당 전처리 지시문으로 정의된 매크로는

코드의 특정 부분을 컴파일할 때 지시한 텍스트로 치환하는데 사용되며

#define으로 정의한 마지막엔 ;(세미콜론)을 붙이지 않는다.

 

#define MAX_VAL 50 // MAX_VAL은 곧 상수 50이다.


//사용예시

printf_s("%d",MAX_VAL);

 

#ifdef , #ifndef , #else , #endif는 조건부 컴파일을 수행하는 데 사용된다.

코드를 특정 조건에 따라 컴파일하거나 제외할 수 있으며 대체로 헤더파일 중복을 피하고자 사용되지만

최근엔 #pragma once를 많이 사용하는 편이다.

다만 #pragma once는 컴파일러들이 다들 지원하긴 하지만 비표준이다.

 

//헤더에서 사용하는 방법

#ifndef __TEST_H__
#define __TEST_H__

(헤더파일의 내용 기재)

#endif

 

#undef는 이전에 정의된 매크로를 해제하는 역할을 한다.

 

//이전에 정의한 매크로 해제

#undef MAX_VAL //MAX_VAL 매크로 해제

 

#error는 컴파일 중에 오류 메시지를 생성한다.

 

#if defined(WIN32)
    // 윈도우즈 플랫폼에서 사용되는 코드
#else
    #error "이 플랫폼은 지원되지 않습니다."
#endif

 

#line은 소스 코드의 특정 라인 번호 및 파일 이름을 설정한다.

주로 디버깅 목적으로 사용하며 일반적으로 자주 사용하지는 않는다.

 

#line 42 "myfile.c" // 현재 라인 번호를 42로 설정하고 파일 이름을 "myfile.c"로 설정

 

 

전처리 지시문은 컴파일 전에 미리 처리되며 특정 전처리 지시문은 성능에 영향이 적어 자주 사용하긴 하지만

지나치게 남발하게 되면 코드의 가독성이 떨어져 유지보수에 좋지 못하니 신중하게 사용해야 한다.

728x90
Comments