매크로 함수

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(); }


매크로가 길 경우에는 \ 를 써서 여러줄로 쓸수 있다.


#define VALUE 1000
#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

설정

트랙백

댓글