3omh4n
3omh4
3omh4n
  • 분류 전체보기 (65)
    • wargame - system (0)
      • DreamHack (9)
      • FTZ (5)
      • LoB (4)
      • pwnable.kr (1)
    • wargame - reversing (0)
      • DreamHack (5)
    • wargame - web (6)
      • webhacking.kr (3)
      • DreamHack (3)
      • HackCTF (0)
    • CS (21)
      • system (19)
      • reversing (0)
      • Linux (2)
    • python (5)
      • Flask (5)
    • C++ (3)
    • 개인기록 (2)
    • 이거저거 (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

최근 댓글

최근 글

태그

  • Devtools
  • error
  • webhacking
  • Reversing
  • systemhacking
  • C++
  • ftz
  • ROP
  • pwntools
  • python
  • hackerschool
  • BOF
  • hacking
  • Programming
  • LOB
  • RELRO
  • Dreamhack
  • System
  • langage
  • flask

티스토리

전체 방문자
오늘
어제
3omh4n

3omh4

C++

[C++] 인라인 함수 (Inline Function)

2022. 1. 5. 22:33

C++기반의 인라인함수 정의



inline int SQUARE(int x) { // 컴파일러에 의해 처리, int형만 처리 가능
    return x*x;
}

int main(void) {
    std::cout << SQUARE(5) << std::endl;
    std::cout << SQUARE(12) << std::endl;
    return 0;
}
  • 매크로 함수는 정의하기 복잡해서 일반 함수처럼 정의 가능하도록 만든 것


C언어 - 매크로 함수

전처리 과정에서 처리



장점

  • 일반적인 함수에 비해서 실행속도 빠름
  • 자료형에 의존하지 않음 → 자료형 변환이 이루어져 데이터 손실이 발생하지 않음



#define SQUARE(x) ((x)*(x))

SQUARE(5);      // 전처리 후 ((5)*(5))
SQUARE(3.12);   // 전처리 후 ((3.12)*(3.12))

단점

  • 정의하기 어려움
  • 복잡한 함수를 매크로의 형태로 정의하는데 한계존재



//메크로함수 예시
#include <iostream>
#define SQUARE(x) ((x)*(x))

int main(void) {

    std::cout << SQUARE(5) << std::endl;
    return 0;

}

//전처리 과정을 거쳤을 때 main 함수
int main(void) {

    std::cout << ((5)*(5)) << std::endl;
    return 0;

}

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

[C++] namespace  (0) 2022.01.05
[C++] 함수 오버로딩 & 매개변수 디폴트 값 (Function overloading & default value)  (0) 2022.01.05
    'C++' 카테고리의 다른 글
    • [C++] namespace
    • [C++] 함수 오버로딩 & 매개변수 디폴트 값 (Function overloading & default value)
    3omh4n
    3omh4n

    티스토리툴바