C언어 매크로 사용법 (1/2. 단순 매크로)

2024. 8. 3. 12:13프로그래밍 언어/C

소스 코드에서 반복적으로 사용되는 코드를 간단하게 정의하고 사용할 수 있게 해주는 전처리기(preprocessor) 기능 중 하나로 #define 지시어를 사용하여 정의된다.

전처리 단계에서 처리하므로 컴파일 이전에 모두 치환된다. 어느 단계에서 처리가 되는지 아는 것도 중요하다.

 

상수 값 정의

코드 내에서 여러번 사용되는 값을 매크로로 정의해서 사용한다. 값에 의미를 부여함으로써 가독성이 올라가고, 값을 변경해야 하는 경우 한번에 수정이 가능하므로 유지보수에 용이하다. 상수를 직접 쓰는 것보다는 이렇게 정의해서 사용하는 것이 좋다.

 

예시 (ChatGPT 생성):

#include <stdio.h>

#define PI 3.14159
#define E 2.71828
#define MAX_BUFFER_SIZE 1024

int main() {
    printf("PI: %f\n", PI);
    printf("Euler's Number: %f\n", E);
    printf("Max Buffer Size: %d\n", MAX_BUFFER_SIZE);
    return 0;
}

 

조건부 컴파일

특정 조건에 따라 코드를 컴파일할지 여부를 결정할 때 사용한다. 주로 디버깅이나 특정 플랫폼 종속적인 코드를 작성할 때 많이 사용한.

예시 (ChatGPT 생성):

#include <stdio.h>

#define DEBUG

int main() {
    printf("Program Started\n");

#ifdef DEBUG
    printf("Debug mode is enabled.\n");
#endif

    printf("Program Ended\n");
    return 0;
}

 

타입 정의

매크로를 사용하여 데이터 타입을 정의할 수 있다. 코드의 가독성을 높이고, 특정 플랫폼이나 환경에 맞게 타입을 쉽게 변경할 수 있도록 함. (컴파일 되는 타겟 플랫폼에 따라 타입의 크기 등 영향을 받을 수 있으므로 플랫폼 마다 플랫폼에 맞는 정의를 해 줌으로 사전에 타입에 따른 오류도 막을 수 있다.)

 

예시 (ChatGPT 생성):

#include <stdio.h>

#define INT long int
#define UINT unsigned int

INT main() {
    UINT age = 25;
    INT population = 7500000000;
    
    printf("Age: %u\n", age);
    printf("World Population: %ld\n", population);
    return 0;
}

 

플랫폼 종속적인 코드

플랫폼에 따라 코드가 달라져야 하는 경우 매크로를 사용하여 구분할 수 있다.

 

예시 (ChatGPT 생성):

#include <stdio.h>

#if defined(_WIN32) || defined(_WIN64)
    #define OS "Windows"
#elif defined(__linux__)
    #define OS "Linux"
#elif defined(__APPLE__) && defined(__MACH__)
    #define OS "Mac OS"
#else
    #define OS "Unknown OS"
#endif

int main() {
    printf("Operating System: %s\n", OS);
    return 0;
}

 

참고 자료: https://ko.wikipedia.org/wiki/%EB%A7%A4%ED%81%AC%EB%A1%9C

 

매크로 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 매크로(macro, 문화어: 마크로)는 "macroscopic"에서 나온 말로, 다음의 형태로도 쓰인다. <!-- NewPP limit report Parsed by mw‐api‐ext.eqiad.main‐5874bfb84f‐5gq78 Cached time: 202407

ko.wikipedia.org

https://www.geeksforgeeks.org/macros-and-its-types-in-c-cpp/

 

Macros and its types in C - GeeksforGeeks

A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

www.geeksforgeeks.org