반응형
함수를 정의할 때 보면
type funct() { ... }
라고 정의할 때가 있는 반면
inline type funct() { ... }
라고 정의할 때도 있다. 이 두개의 차이는 무엇일까? 그건 바로 함수를 호출에 차이가 있다.
즉 inline없이 선언 했을 경우 함수를 호출하지만 inline를 선언해 주면 그 함수 본체의 코드가 직접 삽입된다.
결국 inline 함수를 사용하면 함수를 호출하는 데 걸리는 시간을 최소로 할 수 있으므로 실행 시간이 빠를 수 있다. 그러나 inline함수를 많이 사용하게되면 실행파일이 커진다는 단점 또한 가지고 있다. 즉, 어떠한 함수가 inline 에 적합하냐 하면은...
▶ 1~3줄 정도의 작은 함수
▶ 인수가 많고, 복잡한 함수
▶ 호출 횟수가 적은 함수
▶ 함수 호출에 오버헤드(overhead)가 큰 함수
inline 함수의 제한 사항으로는...
▶ 함수 내에 반복문이 있는 경우에는 사용 불가
▶ inline 붙이 프로토타입 선언 불가
▶ 유효 범위는 정의에서 파일의 종료까지
이다. 뭐 든지 그렇지만 잘 알고 쓰면 좋지만 잘 알지 못하면 쓸대 없이 Error만 발생시키므로 잘 숙지합시다 ^^
type funct() { ... }
라고 정의할 때가 있는 반면
inline type funct() { ... }
라고 정의할 때도 있다. 이 두개의 차이는 무엇일까? 그건 바로 함수를 호출에 차이가 있다.
즉 inline없이 선언 했을 경우 함수를 호출하지만 inline를 선언해 주면 그 함수 본체의 코드가 직접 삽입된다.
일반적인 함수 호출(inline 선언 없는 함수) | 함수 funct()에 inline이 붙어있었을 경우 |
void funct() { example code1; example code2; } int main(){ main_function code1; funct(); // 함수 호출 main_function code2; funct(); // 함수 호출 main_function code3; return 0; } |
int main() { main_function code1; example code1; // 함수 대신 직접 삽입 example code2; main_function code2; example code1; // 함수 대신 직접 삽입 example code2; main_function code3; return 0; } |
결국 inline 함수를 사용하면 함수를 호출하는 데 걸리는 시간을 최소로 할 수 있으므로 실행 시간이 빠를 수 있다. 그러나 inline함수를 많이 사용하게되면 실행파일이 커진다는 단점 또한 가지고 있다. 즉, 어떠한 함수가 inline 에 적합하냐 하면은...
▶ 1~3줄 정도의 작은 함수
▶ 인수가 많고, 복잡한 함수
▶ 호출 횟수가 적은 함수
▶ 함수 호출에 오버헤드(overhead)가 큰 함수
inline 함수의 제한 사항으로는...
▶ 함수 내에 반복문이 있는 경우에는 사용 불가
▶ inline 붙이 프로토타입 선언 불가
▶ 유효 범위는 정의에서 파일의 종료까지
이다. 뭐 든지 그렇지만 잘 알고 쓰면 좋지만 잘 알지 못하면 쓸대 없이 Error만 발생시키므로 잘 숙지합시다 ^^
반응형
'Computer & Program > 잡다한 이모저모' 카테고리의 다른 글
[Linux]리눅스의 특징 (0) | 2009.07.23 |
---|---|
[C/C++]컴파일 & 링크 (0) | 2009.07.22 |
[C++]Function Template (1) | 2009.07.18 |
[C++]cin의 함정 피하기 (0) | 2009.07.18 |
01.리눅스 개요 - 리눅스 역사 (0) | 2009.07.16 |
댓글