linkage
페이지 정보
본문
linkage 란?
컴파일시에 컴파일러가 오브젝트 파일에 남겨놓는 링크에 관한
정보를 말한다. 따라서 링커는 linkage 정보를 보고 어떤 함수
가 결합되어야 할지 판단하게 된다. C에서는 함수끼리 이름만
으로 구분이 가능했었으나 C++ 에서는 다형성에 의해서 이름
만으로는 구분이 불가능하게 되었다.
따라서 C++에서 C 함수를 사용하기 위해서 컴파일러가 linkage
를 C++에 알맞게 변화시키는데 이것을 네임 맹글링
(name mangling)이라고 한다.
형식 : 함수의 프로토타입 앞에 extern "C" 를 붙여주면 된다.
Ex)
extern "C" int myfunc(void);
extern "C" {
int myfunc(void);
void subfunc(char *c);
char *str(int n);
}
extern "C" {
#include "user.h"
}
- 어셈블러로 짜여진 모듈을 사용할 때에도 extern "C"라고 써준다.
- 기존에는 프로젝트 파일을 아스키문서로 작성하였으나 Borland계
열의 C++ 에서 프로젝트를 하기 위해서는 IDE내의 프로젝트 파일
에디터를 사용하여 무척 쉽게 작성이 가능하다. 게다가 어셈블러
모듈까지 프로젝트에 사용할 수가 있다.
컴파일시에 컴파일러가 오브젝트 파일에 남겨놓는 링크에 관한
정보를 말한다. 따라서 링커는 linkage 정보를 보고 어떤 함수
가 결합되어야 할지 판단하게 된다. C에서는 함수끼리 이름만
으로 구분이 가능했었으나 C++ 에서는 다형성에 의해서 이름
만으로는 구분이 불가능하게 되었다.
따라서 C++에서 C 함수를 사용하기 위해서 컴파일러가 linkage
를 C++에 알맞게 변화시키는데 이것을 네임 맹글링
(name mangling)이라고 한다.
형식 : 함수의 프로토타입 앞에 extern "C" 를 붙여주면 된다.
Ex)
extern "C" int myfunc(void);
extern "C" {
int myfunc(void);
void subfunc(char *c);
char *str(int n);
}
extern "C" {
#include "user.h"
}
- 어셈블러로 짜여진 모듈을 사용할 때에도 extern "C"라고 써준다.
- 기존에는 프로젝트 파일을 아스키문서로 작성하였으나 Borland계
열의 C++ 에서 프로젝트를 하기 위해서는 IDE내의 프로젝트 파일
에디터를 사용하여 무척 쉽게 작성이 가능하다. 게다가 어셈블러
모듈까지 프로젝트에 사용할 수가 있다.
댓글목록
등록된 댓글이 없습니다.