이 글에서는 C/C++의 매크로(macro)를 사용하여 두 개의 문자열을 하나로 연결하는 방법을 알아보겠습니다. 매크로 내에서 두 개 이상의 문자열을 정의한 뒤, 이들을 단순히 나란히 작성하면 컴파일 시점에 자동으로 하나의 문자열로 합쳐집니다.
C 언어에서는 인접한 문자열 리터럴이 자동으로 이어지는 특성이 있기 때문에, 별도의 함수 호출 없이 전처리기 단계에서 간단하게 문자열을 연결할 수 있다는 점이 큰 장점입니다.
기본 문법
#define STR1 "str1" #define STR2 " str2" #define STR3 STR1 STR2 // STR1과 STR2가 연결됩니다
위 코드에서 STR3은 STR1과 STR2를 공백 없이 그대로 이어 붙인 형태로 정의됩니다.
입력 및 출력
- 입력: 두 개의 문자열
- 출력: 연결된 문자열
알고리즘
1단계: 두 개의 문자열을 준비한다 2단계: 매크로를 사용하여 문자열을 연결한다 3단계: 결과를 출력하고 종료한다
예제 코드
#include<stdio.h>
#define STR1 "Hello"
#define STR2 "World"
#define STR3 STR1 STR2
int main() {
printf("%s", STR3);
return 0;
}실행 결과
HelloWorld
코드 설명
이 프로그램은 다음과 같이 동작합니다.
STR1은 "Hello"라는 문자열로 정의됩니다.STR2는 "World"라는 문자열로 정의됩니다.STR3은STR1 STR2로 정의되어, 전처리 과정에서 "Hello"와 "World"가 나란히 배치되어 "HelloWorld"라는 하나의 문자열이 됩니다.printf함수가STR3을 출력하면 최종적으로 HelloWorld가 화면에 표시됩니다.
마무리
이처럼 매크로를 활용하면 별도의 strcat() 함수나 메모리 할당 없이도 컴파일 타임에 문자열을 손쉽게 연결할 수 있습니다. 상수 문자열을 조합해 로그 메시지, 경로, 포맷 문자열 등을 만들 때 유용하게 활용할 수 있습니다.