반응형
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> #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 |
댓글