static binding 이랑 static linking 이랑 같은거야?!
어떤 싸이트에선 binding이랑 linking이랑 다르다고 그러고 어디에선 같다고 하고
내생각에 static(dynamic) binding 은 컴파일 타임에 속성이 정해지냐 마냐인 것같고
static(dynamic) linking 은 링킹타임에 결정되는 것같은뎅
같은거야 다른거야!?
dynamic (binding, linking) 둘 다 런타임 시간에 정해진다는거 빼고는 엄연히 다른거 아닌가?!
static link 는 링크시에 함수 구현부를 직접 찾아 링크 하는거고.. 다이나믹 링크는 선언부만 있어도 ok 일거야 다이나믹 바인딩은 객체 지향 개념으로 프로그램 실행시간에 객체에 의해 함수가 정해지는거지 a 클래스에서 상속 받은 b 클래스, c 클래스 중에 *a 타입의 객체로 어떤 함수를 호출했을때 런타임에서 대입받은 실제 객체의 가상함수가 호출 되는게 다이나믹 바인딩이잖아 정적 바인딩은 소스코드에서 static_cast 같은 걸 써서 컴파일 타임에 어떤객체를 쓰는건지 명시적으로 선택하는 거.
binding 은 일반적으로 런타임에 정해지지만 static binding은 컴파일 시간에 이미 정해지는거고 static link , dynamic liink는 런타임이랑 관계 없이 단지 프로그램 빌드과정에서 링크할때 static이냐, dynamic 둘중에 하나를 고르는 것 뿐.. 니 질문 하는거 봐선 아직 개념이 몸에 익지 않은 것 같다
ㅁㅁ// 천재시네요. 근데 static, dynamic link가 런타임에서 link되나, 빌드과정에서 link되냐를 보면 런타임이랑 관계가 있는거 아냐?!
ㅁㅁ// 아 그리고 c++ 에서 binding은 일반적으로 컴파일타임에 정해짐.
통상 link 는 빌드과정에서 컴파일 후에 이루어지는 link를 말하는거고 "DLL"의 Dynamic Linked library라서 런타임에 link된다고 이해하기 쉬운데 함수 호출과정에서 말그대로 연결만 한다는거지.. 빌드과정에서의 link를 런타임에 한다는건 아니잖아. link는 이미 빌드과정에서 다 끝난거고 런타임에는 링크되어(linked) 있는 함수가 호출되고 쓰여지는거지.. 그것을 런타임이랑 관계가 있다고 하는건 link라는 행위를 빌드과정에서의 link를 뜻하는게 아닌게 되지.
ㅁㅁ// 오 고마웡
어쨋든 linking 이랑 binding은 다른거넹, 어떤 사람들은 linking(혹은 binding)이라고 한다. 뭐 이런식으로 많이 써놔서 헷갈렸음
C++ 바인딩은 정적바인딩인 경우 컴파일 타임에 정해지는거고 동적바인딩인 경우 런타임에 정해지는거지. 일반적이란 말은 의미가 없어.
나도 예전에 헷갈렸던 개념이라 ㅋㅋ 프로그래밍 진지하게 공부하는구나 싶네..
ㅁㅁ//乃