티스토리 뷰

Programming/C / C++

[C++]매크로 함수 / inline 함수

군자동꽃미남 2014. 8. 25. 23:35
1. 매크로 함수 : #define 문으로 정의하는 함수로 컴파일 전 단게에서 함수의 호출 부분을 함수의 내용으로 대치하여 실행되는 함수.
- 함수의 호출 없이 호출 위치에 직접 코드 기술.
- 호출에 따르는 오버헤드가 없어 프로그램 수행속도를 높일 수 있음.
- 매크로 함수는 형검사가 어렵고(함수 매개변수로 들어가는 값의 형), 정의환 문장 그대로 대치되기 때문에 사용에 주의해야 함.

#define   SQUARE(n)   ((n) * (n))
....
....
printf("SQUARE(2) = %d\n", SQUARE(2));

----------------------------------------
호출한 형태 그대로 대치되기 때문에 다른 값이 계산되어 출력
#define   ABSOLUTE(n)  (n < 0 ? -n : n)
....
....
cout << ABSOLUTE(2 - 5) << endl;  // -7 출력



2. inline 함수 : 일반적인 함수와 동일한 방법으로 선언하며 inline 키워드를 사용.

- 매크로 함수와 동일하게 코드가 대치되어 수행되는 방식.

- 매크로 함수와 달리 사용에 별다른 제약이 없어 편리하게 사용할 수 있음.


inline int square(int n)

{

return n * n;

}

 

inline int absolute(int n)

{

return n < 0 ? -n : n;

}

 

cout << square("Hello") << endl;  // 인자 때문에 오류 발생

cout << absolute(2 - 5) << endl;  // 3 출력

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함