본문 바로가기

Programming/C / C++

[C++의 특징 - 2] 인라인 함수(Inline Function) 와 네임스페이스(Namespace)

  이전에 C에서는 매크로 함수라는게 있었습니다. C++에서는 이것과 똑같은 기능을 하는것이 바로 인라인 함수 입니다. 우선 매크로 함수에 대해서 살짝 알아 보면...

1. 매크로 함수 (Macro Function)  
 : 전처리기에 의해 처리 되면서, 매우 빠른 실행의 이점을 가지게 되는 함수이다.  아래와 같이 선언해 쓰고, 매크로 함수는 데이터형에 영향을 받지 않는 특징을 가지고 있다. 

하지만 왜 C++에 와서 그대로 매크로 함수를 쓰지 않고 인라인 함수라는 것을 새로 만들어서 사용하는 것일까? 그 이유를 한번 알아 보자.

2. 인라인 함수 (Inline Function)  
 : C와의 매크로 함수와 같지만, 인라인 함수는 컴파일러단에서 처리되면서, 구현이 용이 하며 (이전의 매크로는 구현이 까다롭다), 컴파일러에게 최적화 기회를 제공한다. 

- 컴파일러에 의해 처리가 되면 무엇이 좋을까?
 : 바로 정의가 잘못될 시에 오류 메세지를 찍어 주는 역할을 해줄 수 있다는 것이다. 전처리기에 의해 처리 되는 매크로 함수는 만약 사용자의 실수로 정의가 잘못되었다고 하면, 이런 오류를 잡아내지 못하는 단점을 가지고 있다. 
- 구현의 용이 ?
 : 매크로 함수는 전처리 단계에서 기계적으로 인수를 치환하기 때문에 괄호를 잘 써줘야 하는데요, 반면 인라인 함수는 그냥 우리가 함수를 선언하고 사용하는것 처럼 아주 간단하게 사용할 수 있다는 점이 구현에 용이 하다고 할 수 있습니다. (아래는 사용의 예입니다. 앞에 간단히 inline만 붙여주면 돼죠) 

3. 네임스페이스 (Namespace)  
: 네임 스페이스는 이름 충돌을 막기 위해 공간에 이름을 주는 행위라고 할 수 있겠는데, 한 아파트에 철수가 두명 사는데 그냥 부르기는 헷갈리니 각 사는곳을 덧붙여 이름을 주는 것이죠. 101호에 사는 철수야 , 202호에 사는 철수야 하고 말이죠. 아래와 같이 간단히 쓸 수가 있습니다.