Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어로 따옴표 없이 문자열 출력하기 – 매크로 함수 활용법

이번에 소개할 문제는 꽤 재미있는 트릭성 문제입니다. C 언어에서 따옴표를 전혀 사용하지 않고 문자열을 출력하는 방법을 알아보겠습니다.

핵심 아이디어는 매크로 함수(macro function)를 활용하는 것입니다. 다음과 같이 매크로를 정의합니다.

#define getString(x) #x

getString()은 매크로 함수로, 인자 x를 문자열로 변환하여 반환합니다. x 앞에 붙은 # 기호가 바로 이 역할을 담당하며, 이를 문자열화 연산자(stringizing operator)라고 부릅니다. 전처리기 단계에서 매크로의 인자를 자동으로 문자열 리터럴로 바꿔주기 때문에, 코드 작성 시 따옴표를 직접 입력할 필요가 없습니다.

문제 정의

입력: 따옴표 없이 하나의 문자열을 받음
출력: 해당 문자열을 콘솔에 그대로 출력

알고리즘

1단계: 따옴표 없이 문자열을 준비한다
2단계: 매크로 함수를 사용해 문자열로 변환한 뒤 출력한다
3단계: 종료한다

예제 코드

#include<stdio.h>
#define getString(x) #x
// # 기호가 x를 문자열로 변환합니다
main() {
   printf(getString(Hello World));
}

실행 결과

Hello World

위 예제에서 Hello World라는 단어들은 소스 코드상에서 따옴표로 감싸지 않았음에도 불구하고, 매크로 확장 과정에서 #x에 의해 "Hello World"라는 문자열로 변환되어 정상적으로 출력됩니다.

이러한 문자열화 연산자는 디버깅용 로그 메시지를 자동 생성하거나, 변수 이름을 문자열로 함께 출력해야 하는 상황에서 실무적으로도 유용하게 활용됩니다. 참고로 매크로 인자 안에 공백이나 특수문자가 포함된 경우에도 전처리기가 이를 하나의 문자열로 처리하므로, 간단한 상수 문자열 정의에 편리하게 사용할 수 있습니다.