본문 바로가기
프로그래밍/C

C ] X-Macro

by eteo 2025. 1. 30.

 

 

X-Macro란? 

 

매크로 X()를 재정의하여 데이터를 다양한 형태로 확장하는 기법으로, 주로 리스트 데이터를 정의하고 이를 바탕으로 열거형 및 이에 맵핑되는 문자열 배열을 생성하는데 사용된다.

 

 

사용 예시

 

#include <stdio.h>

// 리스트 정의
#define ERROR_LIST \
    X(ERROR_NONE)        \
    X(ERROR_INVALID)     \
    X(ERROR_TIMEOUT)     \
    X(ERROR_OVERFLOW)

// enum 정의
enum {
#define X(name) name,
    ERROR_LIST
#undef X
    ERROR_COUNT
};

// 문자열 배열 생성
const char *ErrorNames[] = {
#define X(name) #name,
    ERROR_LIST
#undef X
};

int main() {
    for (int i = 0; i < ERROR_COUNT; i++) {
        printf("Error Code: %d, Name: %s\n", i, ErrorNames[i]);
    }
    return 0;
}