Programming/C / C++
[C++]매크로 함수 / inline 함수
Jiung.
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 출력
반응형