본문 바로가기

Programming/C&CPP

GUID(Global Unique Identifier)

반응형

GUID는 Global Unique Identifer라는 용어의 약자로 응용 소프트웨어에서 사용하는 유사난수라고 합니다.

이 숫자가 안 겹칠 확률이 100%는 아니지만, 거의 100%로 봅니다.

2의 128승이라는 엄청나게 큰 수를 난수로 만들기 때문입니다.

2128 = 3.4028×1038이라고 하니, 0이 최소 30개 이상은 뒤에 붙습니다.

GUID의 유일성을 이용하는 것이 COM(Component Object Model)입니다.

COM은 DLL 지옥을 해결하고자 나온 기술입니다.

COM은 참조해야할 함수를 실행시간에 결정하게 해주는데 이것을 가능하게 해주는 것이

가상 함수 테이블입니다.

가상 힘수에 대해서는 아래의 링크를 참조하시기 바랍니다.

2014/12/03 - [Programming/C&C++] - 다형성과 가상함수

뭐 아무튼 COM의 인터페이스는 이름이 겹칠 수도 있습니다.

그래서 유일한 값을 식별할 수 있게 하기 위해서 저 GUID를 도입합니다.

GUID는 전세계에서 유일하다라고 할 만한 숫자이기 때문에 이름이 같아도 겹칠 일이 없습니다.

GUID는 다음과 같이 보통 표현이 됩니다.

{05d7b0f4-2121-4eff-bf6b-ed3f69b894d9}

2진수로 표현하면 너무 길고 이해도 되지 않기 때문에 16진수로 보통 표현합니다.

GUID는 32bit, 16bit, 16bit, 16bit, 48bit로 나눠져 있습니다.

GUID가 필요하면 값을 아주 쉽게 만들 수가 있습니다.

Visual Studio의 Tool 메뉴에는 Create GUID라는 메뉴가 있습니다.

New GUID를 클릭하면 쉽게 새로운 GUID를 생성할 수 있고 GUID Format을 선택해서

원하는 포맷의 GUID를 얻을 수 있습니다.

Windows의 GUID 생성기는 보안상의 취약점이 있었다고 하지만 Windows 7 이후로는 문제가 없습니다.

C++ 코드를 작성할 때 GUID를 통해서 헤더 파일의 중복 참조를 막는 방법을 사용하기도 합니다.

#ifndef {GUID값}
#define {GUID값}
// Fill this area...
#endif

GUID가 필요한 경우라면 툴을 통해서 쉽게 생성하고 사용하면 됩니다.


반응형