minjeong-oh
기록
minjeong-oh
전체 방문자
오늘
어제
  • 분류 전체보기 (207)
    • ML & Neural Net (3)
    • ◼️GNN (1)
    • ◼️시계열 (1)
    • ◼️추천시스템 (0)
    • ◼️수학 (3)
    • Data Engineer (2)
    • ◼️Spark (1)
    • ◼️Kafka (1)
    • ◼️Elestic Search (0)
    • ◼️Redis (0)
    • ◼️ClickHouse (1)
    • Programming Language (4)
    • ◼️React (0)
    • ◼️Git (1)
    • ◼️Python (1)
    • ◼️C++ (33)
    • ◼️Fortran 99 (2)
    • ◼️OpenGL (7)
    • ◼️MFC (35)
    • ◼️Flutter (46)
    • ◼️Kotlin (1)
    • ◼️Android (1)
    • ◼️Java (1)
    • ◼️C (4)
    • Development (0)
    • ◼️디자인패턴 (0)
    • ◼️네트워크 (2)
    • ◼️인증 (1)
    • Computer Science (4)
    • 알고리즘 문제풀이 (12)
    • SQL 고득점 Kit 문제풀이 (8)
    • 취업준비 (0)
    • Notion 정리 글 (1)
    • Article Scrap (12)
      • Careerly - Q&A (7)
      • Careerly - Post (2)
    • 기타 등등 (16)

블로그 메뉴

  • 글쓰기
  • 홈
  • 태그
  • 방명록
  • 편집

공지사항

인기 글

태그

  • 이것이C++이다책참고
  • 리눅스파티션
  • 구조체매개변수
  • 이차원구조체배열포인터
  • kafka구축
  • OpenGL회전
  • hello테마
  • 19년식그램램장착
  • NextJSSwagger
  • 구조체배열포인터
  • 티스토리폰트배경색없애기
  • SpringBootSwagger
  • mfc
  • 인공지능개발자
  • 19년식그램SSD장착
  • 그램풀스팩업그레이드
  • 그램업그레이드
  • API문서정리
  • GSLB
  • AI배워야하나

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
minjeong-oh

기록

◼️C++

[C++] 인라인 함수

2023. 9. 5. 18:06

 

매크로 함수
  - #define 선행처리 지시문에 인수로 함수의 정의를 전달함으로써, 함수처럼 동작하는 매크로.
  - 일반 함수와 달리 단순 치환만을 해주는 것이다.
  - 함수는 아니다!
  - 함수를 호출하면 스택 메모리 사용이 증가하고 매개변수 때문에 메모리 복사가 일어난다. 
    이 때 함수 호출로 인해 오버헤드가 날 수 있기 때문에 이를 극복하고자 매크로를 사용한다.
  - 문제: 함수가 아니기 때문에 논리적 오류를 발생시키기도 한다, 매개변수에 형식을 지정할 수 없다.

 

인라인 함수

  • 인라인함수는 매크로의 장점(함수호출오버헤드극복)과 함수(매개변수형식지정)의 장점을 한 군데 모아놓은 것.
  • 본질적으로 함수이므로 매개변수에 형식을 지정할 수 있어 매크로의 단점을 보완해준다.

 

사용법

함수 원형 앞에 inline이라는 예약어만 작성. (간단)

inline int AddNew(int a, int b){
    return a+b;
}

 

 

모든 함수를 인라인 함수로 사용하지 않는 이유

 

 단순 치환 방식이므로 같은 코드가 기계어에 계속 반복해서 나올 테니 코드의 길이가 일정 수준 이상 길어지면 인라인 함수가 되는 것은 바람직하지 않다. 바람직한 코드의 길이는 모두 컴파일러가 결정한다. 

 

 보통 Visual Studio는 컴파일러가 인라인 함수로 사용하는 데 적합한 함수는 모두 인라인 함수로 만든다. 따라서 Visual Studio를 이용해 컴파일할 경우 인라인으로 선언하지 않았다고 하더라도 적합하다면 인라인 함수로 확장한다. 인라인 함수로 선언했다고 해도 적합하지 않다면 일반 함수로 컴파일한다.

 

 

더보기
 

Visual Studio C++ 사전

c++ 공부 내용을 지속해서 추가하는 게시글입니다. 참고 책 Part1. C에서 C++로 문법 전환하기 Chap1. C와는 다른 C++ [C++] Hello world 출력해보기 [C++] 여러 변수 출력하기 [C++] Visual Studio 에서 추가로 사용

genius-duck-coding-story.tistory.com

'◼️C++' 카테고리의 다른 글

[C++] 식별자 검색 순서  (0) 2023.09.07
[C++] 네임스페이스, using, 네임스페이스 중첩, 네임스페이스 다중정의  (0) 2023.09.06
[C++] 함수다중정의(오버로딩), 템플릿 함수  (0) 2023.09.05
[C++] 디폴트 매개변수  (0) 2023.09.05
[C++] 소숫점 아랫자리 버리기. 정확하지 않은 실수 연산 해결하기  (0) 2023.09.04

    티스토리툴바