본문 바로가기
Programming/C++

마크로를 이용해서 문자열 찍기

by 작은별하나 2014. 12. 2.
반응형

C/C++ 언어에서 마크로를 사용하면 다양한 작업을 할 수 있습니다.

그런데 의외로 이 마크로를 잘 이용하지 못 하는 사람들이 많습니다.


몇가지 마크로와 관련한 팁을 알려드릴께요.


1) 마크로를 이용한 디버그 메세지 찍기.


디버그 메세지를 찍고 싶다면, 다음과 같이 이용해보세요.


#include <stdio.h>

#define OUTDEBUG(fmt, args...) { char s[128]; sprintf(s, fmt " : %s(%d)", ##args, __FILE__, __LINE__); puts(s); }

int main()
{
  char filename[] = "a.txt";
  OUTDEBUG("%s file open error.", filename);
}

윈도즈에서는 아래 형식밖에 안 되네요.

#include <stdio.h>

#define OUTDEBUG(fmt, ...) { char s[128]; sprintf(s, fmt " : %s(%d)", ##__VA_ARGS__, __FILE__, __LINE__); puts(s); }

int main()
{
  char filename[] = "a.txt";
  OUTDEBUG("%s file open error.", filename);
}

이렇게 프로그램을 작성하면, 다음과 같은 결과를 얻을 수 있습니다.

a.txt file open error. : test.cpp(8)


2) 마크로를 문자열로 변환


아주 가끔씩은 마크로 문자를 문자열로 만들고 싶을 때가 있습니다.  프로그램 영역에 사용하는 마크로를 컴파일러에서 변경한다든지 할 때 쓸 수 있는 기법입니다.



#include <stdio.h&gt;

#define DATAFILE     a.txt
#define QUOTE(str)   #str
#define STR(str)   QUOTE(str)

int main()
{
  char filename[] = STR(DATAFILE);
  printf("Data file is %s.\n", filename);
}

사실 이 기법은 자주 사용되지는 않겠지만요.

출력은 다음과 같이 나옵니다.

Data file is a.txt.



728x90

'Programming > C++' 카테고리의 다른 글

로또 출력하기  (0) 2019.11.28
초성 표시하기  (0) 2014.12.26
문자열 처리  (0) 2014.09.26
C++로 문자열 입력받아서 출력 변환하기..  (2) 2014.09.24
로또 번호 생성 및 짝맞추기  (0) 2014.05.05

댓글