LPVOID와 보이드의 차이*
사용할 수 있습니까?void*
대신LPVOID
C로요?
또는LPVOID
보다 특별한 기능을 수행하다void*
.
거기에는 없다LPVOID
C를 입력해 주세요.이것은 Windows에 관한 것입니다.
이러한 종류의 것이 존재하는 이유는 소스 코드에 영향을 주지 않고 릴리스마다 기본 유형을 변경할 수 있기 때문입니다.
예를 들어 Microsoft C 컴파일러의 초기 버전은 16비트입니다.int
및 32비트long
다음과 같은 간단한 방법을 사용할 수 있습니다.
typedef long INT32
음, 32비트 정수 타입이 있네요.
이제 Microsoft C가 32비트를 사용하는 시기로 몇 년 더 거슬러 올라가 보겠습니다.int
및 64비트long
소스코드가 올바르게 기능하도록 하기 위해서, 간단하게 변경해 주세요.typedef
읽을 행:
typedef int INT32
이것은, 유저·피규어·피규어·피규어·피규어·피규어·피규어·피규어를 사용하는 경우long
32비트 정수 타입에 대응합니다.모든 소스 코드를 검토하여 자신의 정의를 변경해야 합니다.
호환성의 관점(다른 버전의 Windows간의 호환성)에서는, Microsoft 의 데이터 타입을 사용하는 것이 훨씬 깨끗합니다.
당신의 구체적인 질문에 대한 답변으로, 아마도void*
대신LPVOID
정의를 내리면 LPVOID
는 변경되지 않을 것으로 예상됩니다.
하지만 만약을 위해 그러지 않을 거야.마이크로소프트가 미래에 일반적인 포인터를 처리하는 다른 방법을 도입할 수 있는지 여부를 알 수 없습니다.LPVOID
Microsoft 의 타입을 사용해도, 실제로는 아무것도 손실되지 않습니다만, 향후, 정의가 변경되어 기본 타입을 사용하기로 결정했을 경우, 몇개의 작업이 필요하게 될 가능성이 있습니다.
포인터가 이러한 종류의 변화에 영향을 받지 않을 것이라고 생각할 수도 있지만, 윈도우가 만들어진 초기 8088일 동안 포인터와 메모리 모델(tiny, small, large, large 등)에는 같은 환경에서도 다양한 크기의 포인터가 존재했다.
LPVOID
Windows API에 불과합니다.typedef
위해서void*
.
LPVOID는 모든 유형의 포인터입니다.이 유형은 WinDef.h에서 typedef void *LPVOID로 선언됩니다.
LPVOID는
typedef void* LPVOID
에 정의되어 있다.Windef.h
모든 윈도 데이터 타입이 정의되어 있습니다.
void*를 사용하여 모든 유형을 가리킬 수 있습니다.
언급URL : https://stackoverflow.com/questions/1987957/difference-between-lpvoid-and-void
'programing' 카테고리의 다른 글
서명되지 않고 서명되지 않은 int를 사용하는 것이 버그를 일으킬 가능성이 높은가요?왜요? (0) | 2022.07.28 |
---|---|
Vuetify 콤보 상자가 값 대신 ID를 반환하지 않음 (0) | 2022.07.28 |
Vuex로부터의 아폴로 요청 (0) | 2022.07.28 |
.gitignore에 Linux 실행 파일을 추가하는 방법 (0) | 2022.07.28 |
하위의 매개 변수가 있는 Vue 트리거링 함수가 예기치 않음 (0) | 2022.07.28 |