Window API 강의 수강 중 LARGE_INTEGER 타입 변환 오류
안녕하세요!
10주차의 Window API 강의를 듣던 중 TimeManager.cpp에서 QueryPerformanceFrequency와 QueryPerformanceCounter메서드에 LARGE_INTEGER 타입으로 변환해서 인자를 넘겨주는 과정에서 오류가 있었는데 해결 과정을 문의하고 싶습니다.


Types.h에 문제가 있을까 싶어서 찾아봤지만, 별다른 이상이 없어서 원인을 모르겠습니다.

Answer 3
0
밖이라서 슬쩍 봤는데 캐스팅이 largeinteger* 가 이닌게 맞나요? 포인터 유무를 확인바랍니다
0
#include "pch.h"
#include "TimeManager.h"
void TimeManager::Init()
{
LARGE_INTEGER frequency;
LARGE_INTEGER prevCount;
::QueryPerformanceFrequency(&frequency);
::QueryPerformanceCounter(&prevCount); // CPU 클럭
frequency = staticcast<uint64>(frequency.QuadPart); // QuadPart 사용
prevCount = staticcast<uint64>(prevCount.QuadPart);
//::QueryPerformanceFrequency(reinterpret_cast<LARGE_INTEGER>(&_frequency));
//::QueryPerformanceCounter(reinterpret_cast<LARGE_INTEGER>(&_prevCount)); // CPU 클럭
}
void TimeManager::Update()
{
LARGE_INTEGER currentCount;
::QueryPerformanceCounter(¤tCount);
deltaTime = (staticcast<float>(currentCount.QuadPart - prevCount)) / frequency;
prevCount = staticcast<uint64>(currentCount.QuadPart);
_frameCount++;
frameTime += deltaTime;
if (_frameTime >= 1.f)
{
fps = staticcast<uint32>(_frameCount / _frameTime);
_frameTime = 0.f;
_frameCount = 0;
}
}
챗지피티가 알려준대로 위의 방식으로 고쳐서 실행했더니 오류없이 잘 작동되는데
위 코드를 그대로 사용해도 될까요?
0
안녕하세요, 인프런 AI 인턴입니다. 꿈꾸는 프로그래머님에게 도움을 드리고자 합니다.
LARGE_INTEGER와 관련된 오류는 때때로 예상치 못한 타입 변환 문제로 발생할 수 있습니다. 주로 겪는 문제 중 하나는 LARGE_INTEGER 타입에 대한 잘못된 변환이거나, 헤더 파일이 올바르게 포함되지 않았기 때문일 수 있습니다.
LARGE_INTEGER 타입 확인: LARGE_INTEGER는 Windows API에서 제공하는 구조체 타입이며, 정교한 성능 타이밍을 위한 큰 정수값을 사용합니다. 만약 uint64와 같은 사용자 정의 타입을 사용하고 있다면, 직접적인 캐스팅을 피하고, 다른 방식을 사용해야 할 수 있습니다.
타입 변환 오류: 오류 메시지에
reinterpret_cast오류가 나타난다면, LARGE_INTEGER를 uint64 또는 vice versa로 직접 캐스팅하고자 했기 때문일 가능성이 높습니다. 이는 잘못된 접근입니다. 일반적으로 QueryPerformanceFrequency나 QueryPerformanceCounter 함수 호출 시, 다음과 같은 방식을 사용할 수 있습니다:
LARGE_INTEGER frequency;
if (!QueryPerformanceFrequency(&frequency)) {
// Handle error
}
LARGE_INTEGER currentCount;
if (!QueryPerformanceCounter(¤tCount)) {
// Handle error
}
- 헤더 파일 확인:
windows.h를 포함하는지 꼭 확인해 주세요. 이 헤더는 LARGE_INTEGER와 관련된 함수를 정의합니다.
아래의 기존 유사 질문 링크를 참조하시면서 확인해 보세요:
- 프레임 - 프레임 관리와 관련한 질문입니다. 여기서는 프레임 횟수와 연관된 관리에 대해 설명하고 있습니다.
추가적인 질문이 있거나 구체적인 코드 예제가 필요하시다면, 더 자세히 문의해 주세요.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
문제집은 없나요 수업을 어떻게 들어야 할지 모르겠어요
0
106
2
동적배열 Vector의 push_back 함수에서 조건문 질문
0
74
1
디버깅할때 메모리보는법 단축키가 뭐죠??
0
90
1
113-충돌처리 강의에서 22:26 부근의 SetPos()를 적용해도 충돌되지 않고 뚫고 지나가게 됩니다.
0
87
1
SaveFile에서 크래시 발생하는 분들 체크해보세요
1
70
1
수업자료 확인 부탁드립니다.
0
106
3
explicit을 붙였을 때 빨간줄이 뜨는 이유가 맞는지 궁금합니다.
0
100
0
22강에서 구조체와 포인터로 설명해주셨는데 패딩의 경우는 어떻게 되나요?
0
88
2
리소스 매니저 강의 18분 부근
0
89
1
[Service강의] owner -> shared_ptr
0
80
2
C#에서 생성자 관련 질문
0
83
2
특정 조건에서만 함수를 반환할 때
0
90
2
스택 empty
0
105
2
섹션4 배열실습 질문입니다.
0
133
1
섹션3 '파일분할' 강의 질문입니다.
0
99
1
Defines.h의 DECLARE_SINGLE관련 질문입니다.
0
110
1
세션8 우선순위 큐 pop함수의 Predicate 적용 관련 질문이 있습니다.
0
180
3
섹션9 함수 포인터 관련 질문입니다.
0
137
1
exercise_A 번 문제 해결방법에 대한 질문.
0
150
1
[강의명: virtual 소멸자] 자식 클래스의 소멸자에도 virtual 을 붙이시는 이유가 궁금합니다
0
198
2
Scene과 SceneManager 강의 수강 중 키보드 입력 오류
0
147
1
섹션15 스마트 포인터 20:00 질문이요!
0
127
1
55강 수업자료 빌드를 하면 이상합니다.
0
132
1
virtual 소멸자 관련 질문
0
169
1

