C 프로그래밍에서는 매크로를 활용하면 변수의 이름 자체를 문자열로 출력할 수 있습니다. 이는 # 연산자(문자열화 연산자, Stringize Operator)를 사용하는 간단한 기법으로, 디버깅이나 로그 작성 시 유용하게 활용됩니다.
예제 코드
#include <stdio.h>
#define VariableName(name) #name
int main() {
int name;
char ch;
printf("변수 이름 : %s", VariableName(name));
printf("\n변수 이름 : %s", VariableName(ch));
return 0;
}실행 결과
변수 이름 : name 변수 이름 : ch
코드 설명
위 프로그램에서 변수 이름을 출력할 수 있는 핵심은 main() 함수 이전에 정의된 다음 매크로입니다.
#define VariableName(name) #name
여기서 #name은 전처리기(preprocessor)가 제공하는 문자열화 연산자입니다. 매크로에 전달된 인수를 그대로 큰따옴표로 묶인 문자열 리터럴로 변환해 주기 때문에, 변수의 값이 아니라 변수의 '이름'이 그대로 출력됩니다.
프로그램 본문에서는 서로 다른 자료형을 가진 두 개의 변수를 선언한 뒤, 앞서 정의한 매크로 함수를 통해 각각의 변수 이름을 출력합니다.
int name;
char ch;
printf("변수 이름 : %s", VariableName(name));
printf("\n변수 이름 : %s", VariableName(ch));정리
이처럼 C 언어에서는 #define과 문자열화 연산자(#)를 조합하면 별도의 복잡한 코드 없이도 변수 이름을 손쉽게 문자열로 출력할 수 있습니다. 특히 여러 변수의 상태를 확인해야 하는 디버깅 상황에서 코드 가독성을 높이는 데 큰 도움이 됩니다.