인라인 함수, 매크로함수란? / C

Tkdyun·2024년 2월 9일

분분한 낙화

목록 보기
6/9

인라인 함수?

  • 인라인 함수는 인라인으로 정의한 함수 호출 시 호출된 자리에 코드 자체가 안으로 들어간다.
    즉, 정의된 함수의 내용을 호출해서 실행하는 것이 아니라 호출하는 코드 자체가 함수 내용의 코드로 실행된다.

장단점

  • 알고리즘의 실행속도가 빨라진다.
    함수가 호출될때마다 처리해야하는 작업들이 생략

  • 메모리 사용 측면에서 일반 함수보다 불리하다.
    인라인 함수가 몇번 호출되었든간에 코드 자체가 호출된 부분에 삽입되어야하기 때문에 메모리 낭비가 이뤄진다.

inline void Prnt(){
	printf("Helloworld");
}
inline int Plus(int a, int b){
	return a+b;

매크로 함수

#define으로 시작하는 문장을 매크로라고 한다.

  • 함수처럼 인자를 설정할 수 있는 매크로
    인라인 함수와 마찬가지로 호출되면 그 자리에 사본을 붙여넣어 코드 자체가 실행된다.

  • 인자의 자료형을 선언하지 않는다.
    자료형의 독립성을 보장

  • 매크로 함수 내부에서 자기 자신을 호출할 수 없다.

#define SWAP(a,b,c) {a=b; b=c; c=a;}
#define mul1(x,y) x*y
#define mul2(x,y) (x)*(y)
  • 곱셈처럼 연산 순서에 영향을 미칠 수 있는 것은 괄호를 명시해준다.
    ( x = num+1, y = num2+1 이면 mul1 은 num+1*num2+1 로 수행한다.)

  • # 연산자를 사용하면 인자의 자료형을 문자열로 바꿔줄 수 있다.

#defind add(x,y) #x "+" #y

매크로 함수와 인라인 함수의 특징

  • 작동 방식 매우 유사
  • 인라인 함수는 컴파일 단계에서 수행되고
    매크로 함수는 전처리 단계에서 수행된다.
  • 인라인 함수는 실행하는 타입 검사를 수행
    매크로 함수는 자료형의 독립성을 지켜준다.
profile
"Hello World"

0개의 댓글