본문 바로가기
Programming/C

[C언어] #define 전처리기 쉽게 사용하기

by 이브(Eve) 2023. 11. 2.

Contents

 1. 전처리기(Preprocessor)란?
 2. #define 전처리기
 3. #define 예제 코드
 4. #연산자 


1. 전처리기(Preprocessor)란?

프로그램 코드를 컴파일 하기 전에 특정한 작업을 수행하는 소프트웨어 도구이다.
컴파일 단계 이전에 특정한 코드의 변경, 수정, 조건적 컴파일, 헤더 파일의 포함 등을 처리한다.
C언어의 전처리기 명령어는 '#' 기호로 시작되며, #include, #define, #ifdef 등이 있다. 이들을 '전처리기 지시자' 라고 부른다.
 

2. #define 전처리기

#define은 C언어에서 매크로를 정의해 일반적으로 코드 내에서 많이 사용되는 상수나 함수를 정의할 때 사용한다.
이는 값이 고정되어 불필요하게 수정되는 것을 방지하고, 자주 사용된 값을 바꾸어야 할 때 유용하게 사용할 수 있다.
코드의 가독성이 향상되어 보기에도 편리하다 !!


 
< #define의 기본 형식 >

#define 문자열 정의할 값

 
자료형과 세미콜론(;)은 붙이지 않는다. 정의할 값을 문자열로 치환하는 느낌!
define을 사용하는 순간 문자열은 해당 값을 나타내는 것이 된다.
 

3. #define 예제 코드

- #define을 이용해 원주율을 정의하고 원의 넓이 구하기

#include <stdio.h>
#define PI 3.14 // PI = 3.14

int main() 
{
    float r = 3.0; // 반지름
    float 원의넓이 = PI * r * r;

    printf("원의 넓이 : %f", 원의넓이);

    return 0;
}

 
- 실행 결과

원의 넓이 : 28.260000

 
이와 같이 #define을 이용하여 상수를 정의하는 것을 '매크로 상수'라고 한다.
 
- #define을 이용해 덧셈 함수 정의하기

#include <stdio.h>
#define ADD(a, b) a+b

int main() 
{
    int x = 5, y = 3;
    int result = ADD(x, y);

    printf("덧셈 결과 : %d", result);

    return 0;
}

 
ADD(a, b)를 입력하면 이를 a+b로 인식하겠다는 뜻이다.

- 실행 결과

덧셈 결과 : 8

 
이와 같이 #define을 이용하여 함수를 정의하는 것을 '매크로 함수'라고 한다.
일반 함수의 경우 반환 값을 가지지만, 매크로 함수는 단순히 치환만 한다는 점에서 차이가 있다.
 
- #define을 이용해 문자열 출력

#include <stdio.h>
#define SayHello "안녕하세요!"

int main() 
{
    printf(SayHello);

    return 0;
}

 
SayHello라는 문자열 자체가 안녕하세요!라는 문자열이 된다!

- 실행 결과

안녕하세요!

 

4. #연산자

#define을 사용할 때 매개변수 앞에 #를 붙일 경우 해당 매개변수를 문자열로 만들어주는 기능이 있다.

#include <stdio.h>
#define String(x) #x // #연산자를 활용해 입력받은 x를 문자열로 처리

int main() 
{
    printf("문자열로 출력하기 : %s", String(5)); // 상수 5를 문자열로 출력하기 위해 %s 입력
    return 0;
}

 
- 실행 결과

문자열로 출력하기 : 5