티스토리 뷰
[원글 - 2014년 이글루스]
stackoverflow 눈팅하다가 괜찮아 보여서 링크~
http://stackoverflow.com/questions/9104568/macro-vs-function-in-c
Example. 1
#define square(a) a * a
square(5) // --> 5 * 5 --> 25
square(1 + 2) // --> 1 + 2 * 1 + 2 --> 1 + 2 + 2 --> 5
square(x++) // --> x++ * x++ --> increments x twice
Example. 2
#define swap(x, y) t = x; x = y; y = t;
if (x < y) swap(x, y); // --> if (x < y) t = x; x = y; y = t; --> if (x < y) { t = x; } x = y; y = t;
Example. 3
#define print(x, y) printf(x y) /* accidentally forgot comma (콤마를 깜빡하면...) */
print("foo %s", "bar"); /* prints "foo %sbar" */
Example. 4
#define min(a, b) (a < b ? a : b)
min(x++, y) // --> (x++ < y ? x++ : y)
min(x & 0xFF, 42) // --> (x & 0xFF < 42 ? x & 0xFF : 42) --> (x & (0xFF < 42) ? x & 0xFF : 42)
'개발 관련 정리 (구 블로그에서 백업) > Language 관련' 카테고리의 다른 글
[C/C++] 한글 초성 추출 (0) | 2018.11.26 |
---|---|
[C/C++/JAVA] 숫자를 고려한 파일 이름 정렬 (0) | 2018.11.26 |
[C++] Date Class (0) | 2018.11.26 |
[C/C++] 어쩌다 저지를 수 있는 for문 스코프 런타임 오류 (0) | 2018.11.26 |
[C/C++] 2차원 배열의 동적 할당 (0) | 2018.11.26 |
댓글