[프로그래밍 언어]/C,C++

열혈 C++ 프로그래밍 ch 01-4 인라인 함수 (inline)

우당탕탕 개발 일지 2024. 7. 5. 16:54

안녕하세요. 우당탕탕 개발일지입니다.  열혈 C++책으로 C++ 문법을 다시 정리하려고 합니다. 간단하게  내용 요약하고 문제푼 코드를 올립니다. 한번 올라가는 분량이 적습니다. 가벼운 마음으로 봐주세요.  아자아자 소프트!

 

내용요약 ♠ p33~36

 

1) 인라인 함수  = 프로그램 코드 안으로 들어가 버린 함수.

  •  in=내부
  • line= 프로그램 코드 라인

=> 매크로 함수의 단점을 보완하고 장점을 유지하기 위해서 사용.

#include<iostream>

inline int SQUARE(int x)
{
	return x*x;
}

int main(void)
{
	std::cout<<SQUARE(5)<<std::endl;//25
    return
}

 

 


2) 전처리 문장(#include)

  • 다른 파일을 포함
  • 소스파일 내 특정 문자열을 다른 문자열로 대치,
  • 조건에 따라 코드 일부를 컴파일하지 않게 함.

 

3) 매크로

매크로 =자주 사용하는 여러 개의 명령어를 묶어서 하나의 키 입력 동작으로 만든 것을 말한다

단순 매크로  값을 지정하지 않고 정의 가능. #define PI 3.1415
함수 매크로  함수처럼 매개변수가 있는 매크로. #define SQUARE(x) ((x)*(x))

 

 

4) 매크로 함수 

매크로 함수  특징  설명
장점 일반적인  함수에 비해서 실행속도의 이점이 있다. 실제로 함수 호출이 일어나지 않기 때문에 함수보다 빠르다.
단점 정의하기 어렵다.복잡한 함수는 정의할 수 없다.  코드를 알아보기 힘들고 디버깅이 힘들다.

 

 

#include<iostream>
#define SQUARE(x) ((x)*(x))

int main(void)
{
	std::cout<<SQUARE(5)<<std::endl; //25 
    return 0;
}

 

 


5) 매크로 함수에는 있지만 인라인에는 없는 것.

 

1. 매크로는 자료형에 의존적이지 않음.= 어떠한 경우에도 데이터 손실이 발생하지 않음.

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

 

inline int SQUARE(int x)
{
	return x*x;
}

 

 

1-1 인라인에 템플릿을 사용하면 자료형에 의존적이지 않게 만들 수 있음.

#include<iostream>

template <typename T>
inline T SQUARE(T x)
{
	return x*x;
}

 

728x90