백슬래쉬 -> 슬래쉬로 대체..ㅋ 백슬레쉬 어떻게 써요 ?ㅠ

ㅁ 기본
#define max(a, b) (a > b ? a : b)

ㅁ 여러줄일경우
case1.
#define max_print(a, b)        /
        if(a > b)        /
                printf("%d is largerthan %dn", a, b);        /
        else                /
                printf("%d is largerthan %dn", b, a);

case2.
#define max_print(a, b)        do {                /
        if(a > b)        /
                printf("%d is largerthan %dn", a, b);        /
        else                /
                printf("%d is largerthan %dn", b, a);        /
} while(0)

ㅁ 매크로함수가 리턴값있으려면 "ㅁ기본" 의 경우를 써서 대체하든가, 여러줄 쓰되 포인터 변수 넘겨서 해주어야함..

ㅁ 매크로 함수 내부에 반복문 있을수 없음 -> 즉 inline 함수에서도 반복문 있을경우 걍 함수처럼 호출됨


#define max(a, b) (a > b ? a : b)   ->  요렇게 하믄 포인터 안쓰고도 결과 리턴받을수 있음.

근데 매크로가 좀 커지면 삼항연산만으로 끝내기 난감할때가 있음
그래서 포인터변수로 리턴값주기(implicit return value) 좋은건 아님 ㅋ
max를 길게 써보자면

#define max(a, b, pRet)        do {        /
        if(a > b)        (*pRet) = a;        /
        else                (*pRet) = b;        /
} while(0)

int main(void) {
        int max_i = 0;
        max(1, 2, &max_i);
        printf("max : %d\n", max_i);
        return 0;
}

헤헼ㅋ 이게 끝이내 괜히 말꺼냈당 ㅋㅋ