맹글링(Mangling)

C,C++ 2015. 4. 29. 11:35

C / C++에서 함수의 이름을 컴파일러가 바꾸는 것.


C에서는 Name Decoration 이라 불리고 함수이름의 앞이나 뒤에 _, 숫자, 문자 등이 추가되는 수준.


C++에서는 Mangling의 뜻처럼 (형태를 알수없게 짓이기다, 난도질하다) 컴파일러가 자신만 알아볼 수 있도록 변경한다.


C++의 개념인 맹글링이 중요한 이유

 - C에서는 같은 이름의 함수가 존재하지 않으나 C++에서는 같은 이름의 함수가 무수히 많      을 수 있고, 매개변수의 형, 갯수가 동일 할 수 있기때문에 컴파일러가 식별하기 위함.


C

ex ) 



C++

ex )



이미지 출처 : http://blog.daum.net/jyyunpp/3519091


또한 extern 키워드를 쓰는 이유이기도 하다.

exturn은 외부에 선언된 변수를 사용하겠다. 는 것인데 만약 외부에서 참조할 변수가 C로 컴파일 된 경우라면 exturn "C"를 해주어야 한다. 즉 맹글링을 하지 않겠다. 하고 선언하는 것.


결론 : C++ 개발자가 알아두면 좋은 개념.

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

Template  (0) 2019.08.05
Posted by altDeveloper
,