본문 바로가기

PL/C & C++

[C & C++] macro function, inline function

  • 일반 함수 작동 방식

그런데 여기서 함수포인터를 통하여 함수 내용으로 이동하는데 시간이 소요되게된다.

뭐 엄청나게 큰 타임은 아닐지라도 함수내용이 getter setter와 같이 별볼일 없거나 그러면 왔다 갔다 하는 시간이 더 걸리지도 모른다.

그래서 그러한 함수들은 그냥 포인터로 접근하지말고 사용하는 위치에다가 때려박고싶다.

 

인라인 함수를 쓰면 컴파일 시간이 길어지고 프로그램 크기가 커진다
그러나 런타임 속도가 빠르다(함수로 넘어가는 시간을 절약)

 

[C++ 때려잡기] C++ 심화강의 7 inline 함수

2018/08/27 - [교육 노트/C++ 심화강의] - [C++ 때려잡기] C++ 심화강의 1 객체 지향 프로그래밍과 클래스 2018/08/27 - [교육 노트/C++ 심화강의] - [C++ 때려잡기] C++ 심화강의 2 접근 한정자 2018/08/27 - [교..

see-ro-e.tistory.com

  • 메크로 함수

전처리기가 처리한다.

프로그램 가독성 높임

유지보수 용이

변수 사용하는 것보다 처리속도 빠름

 

단점 : 정의 어려움, 복잡한 매크로 형태로 정의하는 것 한계 있음

 

  • 인라인 함수

그런데 여기서 함수포인터를 통하여 함수 내용으로 이동하는데 시간이 소요되게된다.

뭐 엄청나게 큰 타임은 아닐지라도 함수내용이 getter setter와 같이 별볼일 없거나 그러면 왔다 갔다 하는 시간이 더 걸리지도 모른다.

그래서 그러한 함수들은 그냥 포인터로 접근하지말고 사용하는 위치에다가 때려박고싶다.

클래스 선언부에 바로 구현된 멤버 함수들에 대해서는 inline선언이 없어도 인라인 함수로 자동으로 처리한다. 따라서 이 예에서 isPushed()함수는 인라인 함수로 자동으로 간주된다.


 

C++ 인라인(inline) 멤버 함수

 C++ 에서 함수를 호출하는데 있어서는 어느 정도 댓가가 따른다. 함수를 호출하기 직전에 기존 정보를 저장하고 인자를 넘겨주고 실행 순서를 바꾼 후 함수의 수행이 끝나면 사용한 메모리를

studymake.tistory.com

'PL > C & C++' 카테고리의 다른 글

[C++] 함수 객체  (0) 2021.01.26
[C++] 참조 사이트  (0) 2021.01.20
[C] 연결 리스트 구조체 만들고 사용하기  (0) 2021.01.14
[C++] class와 struct의 차이  (0) 2021.01.13
[C++] -> 와 . 의 차이  (0) 2021.01.12