C/C++ 코딩시 매크로는 #define 을 사용하여 다음과 같이 정의하곤 합니다.
단순하게 상수등을 다음과 같이 정의하곤 하지만~
#define PI (3.141592)
상수 뿐만이 아니라 매개변수등도 이용할 수가 있습니다.
사용법은 굉장히 단순한데요.
다음과 같이 원의 넓이를 구하는 매크로를 구성할 수 있습니다.
#define CIRCLE(x) ((x)*(x)*(PI))
매크로 정의시에는 항상 모든 부분들을 괄호를 이용하여 꼼꼼하게~ 묶어 주는 게 좋습니다. 그렇지 않으면~~ 까딱 잘못하다가 예상치 못한 결과를 얻을 수 있거덩여~
다음으로 # 연산자를 간단하게 소개하겠습니다.
이미 많은 분들이 아시겠지만, # 연산자는 매개변수를 문자화 하는 연산자 입니다.
다음과 같이 사용합니다.
#define STRING(x) #x
위와 같이 define 을 하고 STRING(Character) 하면~ " Character" 라고 문자열로 정의한것과 마찬가지 입니다.
이제 마지막으로 ## 연산자에 대해 소개해 드리죠~
아래와 같이 정의하고~
#define X(n) x##n
X(1) 이라고 하면~ 이는 변수 x1 을 입력한 것과 동일합니다. 즉. ## 연산자는 토큰들을 결합하는 역할을 하는거죠.
x1, x2, x3 …. 등과 같이 정의하고 싶다면~ ## 연산자를 이용해서 처리 할 수 있겠죠~
위 설명한 부분에 대해 간단하게 예제를 만들어 보았습니다.
#include <iostream>
using namespace std;
#define PI (3.141592)
#define CIRCLE(x) ((x)*(x)*(PI))
#define STRING(x) #x
#define INT_X(n) int x##n = n
#define COUT_X(n) cout << "x"#n" = " << x##n <<endl
int main()
{
// 원의 넓이
cout << "반지름 4인 원의 넓이 : " << CIRCLE(4) << endl ;
// 매크로 # 연산자
cout << "# 연산자 예 : " << STRING(문자열로~) << endl ;
// 매크로 ## 연산자
INT_X(0);
INT_X(1);
INT_X(2);
INT_X(3);
COUT_X(0);
COUT_X(1);
COUT_X(2);
COUT_X(3);
return 0;
}
위 코드를 실행 시켜 보면 다음과 같은 결과가 나타납니다.
#, ## 연산자를 이용한 매크로는 디버그시 특히 유용하다 하더군요~
아래 주소에서 macro 에 대한 좋은 예들을 볼 수 있다.
http://www.cprogramming.com/tutorial/cpreprocessor.html
'컴퓨터일반' 카테고리의 다른 글
C/C++ file open path seperator (0) | 2012.11.23 |
---|---|
Windows 심볼릭링크파일 vim으로 편집 후 저장할 때…. 링크가 왜 깨질까? (0) | 2012.11.16 |
Ubuntu 에서 cmake 사용시 CMAKE_CXX_COMPILER-NOTFOUND 에러 (0) | 2012.11.04 |
VirtualBox 홈페이지 주소 바뀐건가…. (0) | 2012.11.04 |
Mingw Makefile 을 사용한 빌드 (0) | 2012.10.28 |
KMPlayer 깔 때 짜증나는 것들... (0) | 2012.10.21 |
간단하게 동영상 codec 정보 알아보기 (0) | 2012.10.14 |
CodeBlock 에서 FFTW 라이브러리를 사용한 FFT 실습 (281) | 2012.08.26 |
댓글