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++ 개발자가 알아두면 좋은 개념.