CafeM0ca

[C++]inline 본문

Programming/C++

[C++]inline

M0ca 2017. 11. 29. 05:34
반응형

인라인 함수는 함수와 다르게 코드를 대체한다.  뭔소린가 싶지만 루틴을 보면 안다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include<iostream>
using namespace std;
//선언과 정의 둘중 한 곳에서 inline 키워드를 함수 타입 앞에 써주면 된다.
inline void hi() {
    cout << "hi\n";
}
void hello() {
    cout << "hello\n";
}
 
int main() {
    hi();
    hello();
    return 0;
}
 
//위 아래는 같다.
    
#include<iostream>
using namespace std;
void hello() {
    cout << "hello\n";
}
 
int main() {
cout << "hi\n";
    hello();
    return 0;
}
cs

인라인 함수로 선언된 코드를 호출되는 부분에 그대로 대체하는 것이다.

일반 함수는 그 함수로 이동하는 점에서 다르다.


일반 함수가 호출되면 함수의 주소로 이동했다가 돌아와야하는데 인라인 함수는 이 과정이 없기 때문에 좀 더 빠르다.

인라인 함수가 처리하는 시간이 길다면 별 이득이 없다. 

우리가 π를 3.14159265359로 쓰지않고 3.14로 사용하는 것 처럼 인라인 함수가 처리시간이 커지면 별 차이가 없기 때문이다.


+ 최근 컴파일러는 똑똑해서 알아서 inline 해주거나 소스코드가 길면 inline을 빼준다. 그니까 그냥 안써도 무방..


inline member data

class 안에 data멤버로 inline을 삽입할 수 있다.

class A

{
    public:

         static inline int a = 0;

};


이렇게 함으로써 얻는 이점은 소스 파일에 공간을 할당할 필요가 없다.

소스파일의 int A::a; 가 inline으로 인해 지워진다.

반응형

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

[C++]템플릿  (0) 2018.01.03
[C++] 런타임 과정에서의 입력 값  (0) 2017.12.02
[C++]함수 포인터  (0) 2017.11.29
[C++]cctype 라이브러리  (0) 2017.11.08
[C++11]range for문  (0) 2017.11.08
Comments