프로그래밍 언어/C
[C/C++ 8.0] 매크로(Macro) 함수
물꼮이
2022. 3. 11. 22:03
1. 매크로 사용법)
#define NAME 치환할값
-> NAME이 치환할값으로 치환됨, 상수, 함수 둘다 가능
2. 매크로 사용이유)
가독성향상/코드수정용이/빠름
메모리차지하지않음_메모리할당X, 전처리기단계에서 문자열 자체를 치환 => 컴파일 전 치환됨
3. 매크로 사용규칙)
#include 아래에 위치/ 전부대문자
ex) SIZE등을 매크로로 지정
4. 유의사항***)
함수값이 달라질 수 있음
ex) #define func(x) x*x 에서, func(2+5)를 호출하면
7*7 =49 가 아닌, 2+5*2+5 = 17 이 호출됨
ex) #define max_macro(x,y) (x>y?x:y) 대신 전체괄호를 뺀
#define max_macro(x,y) x>y?x:y 를 사용하면, 2*max(3,2)를 호출하면
2*(3>2?3:2) =2*(3)=6 이 아닌, 2*3>2?3:2 즉 (6)>2?3:2 =3 이 호출됨
ex) max(3,i++)같은 것도 문제됨
?? 책 p.22쪽 / code complete 책추천 / 시간오래걸릴수도 있음