글
매크로 함수
Programming/C Language
2009. 8. 18. 23:02
매크로 함수 호출문에서는 ++, -- 등의 증감 연산자나 +=, *= 등의 복합 대입 연산자는 쓰지 않는 것이 좋다.
#define dubae(i) ((i)+(i))
void main()
{
int k,j;
k = 3;
j= dubae(k++);
}
이라고 쓰게 되면 j에는 6이 출력 되고, k는 5가 된다. 왜냐하면 매크로 함수를 호출하게 되면
( (3++) + (3++) ) 로 치환이 되기 때문이다.
#define abc()\
{ a();\
b();\
c(); }
매크로가 길 경우에는 \ 를 써서 여러줄로 쓸수 있다.
이때 VALUE2 * 2 를 하게 되면 결과는 .. 2200 이 나올까? 그렇지 않다. 결과는 1200 이다.
그 이유는 VALUE2 가 VALUE+100 으로 치환되어서 VALUE+100*2 가 되어서 결과는 1200이다.
이런 경우 ( VALUE + 100 ) 로 묶어 주어야 한다.
출처 : www.winapi.co.kr
#define dubae(i) ((i)+(i))
void main()
{
int k,j;
k = 3;
j= dubae(k++);
}
이라고 쓰게 되면 j에는 6이 출력 되고, k는 5가 된다. 왜냐하면 매크로 함수를 호출하게 되면
( (3++) + (3++) ) 로 치환이 되기 때문이다.
#define abc()\
{ a();\
b();\
c(); }
매크로가 길 경우에는 \ 를 써서 여러줄로 쓸수 있다.
#define VALUE 1000
#define VALUE2 VALUE+100
#define VALUE2 VALUE+100
이때 VALUE2 * 2 를 하게 되면 결과는 .. 2200 이 나올까? 그렇지 않다. 결과는 1200 이다.
그 이유는 VALUE2 가 VALUE+100 으로 치환되어서 VALUE+100*2 가 되어서 결과는 1200이다.
이런 경우 ( VALUE + 100 ) 로 묶어 주어야 한다.
출처 : www.winapi.co.kr
'Programming > C Language' 카테고리의 다른 글
구조체 정렬 (0) | 2009.09.27 |
---|---|
#include 와 #define 의 순서 (0) | 2009.08.18 |
코딩 스타일 (0) | 2009.08.15 |
#ifndef ~ #define ~ #endif (0) | 2009.08.15 |
헤더파일과 소스파일 (0) | 2009.08.02 |