포인터를 정수로 변환
void* 인수를 적절한 유형으로 변환해야 하는 상황에서는 다음이 중요합니다. 다양한 시스템 아키텍처 간의 호환성을 보장합니다.
64비트 시스템에서는 void*를 캐스팅하여 int는 정밀도 손실을 초래할 수 있습니다. 이 문제를 해결하기 위해 최신 C 접근 방식에는 reinterpret_cast
올바른 정수 유형:
포인터를 정수로 올바르게 저장하려면 적절한 유형은 <에 정의된 uintptr_t 또는 intptr_t입니다. ;stdint.h> C99 또는 C 11의 std 네임스페이스.
올바른 캐스팅 연산자:
C에서는 reinterpret_cast가 포인터 변환에 선호되는 캐스팅입니다. C 캐스트를 사용하지 마세요.
예:
#include <cstdint> void *p; std::uintptr_t i = reinterpret_cast<std::uintptr_t>(p);
관련 질문:
위 내용은 C에서 void* 포인터를 정수로 안전하게 변환하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!