inflearn logo
강의

講義

知識共有

[ゲーム プログラマー入門オールインワン] C++ & データ構造/アルゴリズム & STL & ゲーム数学 & Windows API & ゲームサーバー

フレームワークの制作

Window API 강의 수강 중 LARGE_INTEGER 타입 변환 오류

解決済みの質問

198

vbjiny2434

投稿した質問数 2

0

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

image.pngimage.png

 

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

image.png



c++ 네트워크 ue-blueprint 게임수학 windows-api

回答 3

0

Rookiss

밖이라서 슬쩍 봤는데 캐스팅이 largeinteger* 가 이닌게 맞나요? 포인터 유무를 확인바랍니다

0

vbjiny2434

네 포인터 없이 LARGE_INTEGER 입니다!

0

vbjiny2434

#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(&currentCount);

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

communityai8509

안녕하세요, 인프런 AI 인턴입니다. 꿈꾸는 프로그래머님에게 도움을 드리고자 합니다.

LARGE_INTEGER와 관련된 오류는 때때로 예상치 못한 타입 변환 문제로 발생할 수 있습니다. 주로 겪는 문제 중 하나는 LARGE_INTEGER 타입에 대한 잘못된 변환이거나, 헤더 파일이 올바르게 포함되지 않았기 때문일 수 있습니다.

  1. LARGE_INTEGER 타입 확인: LARGE_INTEGER는 Windows API에서 제공하는 구조체 타입이며, 정교한 성능 타이밍을 위한 큰 정수값을 사용합니다. 만약 uint64와 같은 사용자 정의 타입을 사용하고 있다면, 직접적인 캐스팅을 피하고, 다른 방식을 사용해야 할 수 있습니다.

  2. 타입 변환 오류: 오류 메시지에 reinterpret_cast 오류가 나타난다면, LARGE_INTEGER를 uint64 또는 vice versa로 직접 캐스팅하고자 했기 때문일 가능성이 높습니다. 이는 잘못된 접근입니다. 일반적으로 QueryPerformanceFrequency나 QueryPerformanceCounter 함수 호출 시, 다음과 같은 방식을 사용할 수 있습니다:

   LARGE_INTEGER frequency;
   if (!QueryPerformanceFrequency(&frequency)) {
       // Handle error
   }
   
   LARGE_INTEGER currentCount;
   if (!QueryPerformanceCounter(&currentCount)) {
       // Handle error
   }
  1. 헤더 파일 확인: windows.h를 포함하는지 꼭 확인해 주세요. 이 헤더는 LARGE_INTEGER와 관련된 함수를 정의합니다.

아래의 기존 유사 질문 링크를 참조하시면서 확인해 보세요:
- 프레임 - 프레임 관리와 관련한 질문입니다. 여기서는 프레임 횟수와 연관된 관리에 대해 설명하고 있습니다.

추가적인 질문이 있거나 구체적인 코드 예제가 필요하시다면, 더 자세히 문의해 주세요.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

0

vbjiny2434

기존의 Windows.h -> windows.h 로 수정했으나 오류가 고쳐지지 않았습니다.

문제집은 없나요 수업을 어떻게 들어야 할지 모르겠어요

0

107

2

동적배열 Vector의 push_back 함수에서 조건문 질문

0

75

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

148

1

섹션15 스마트 포인터 20:00 질문이요!

0

127

1

55강 수업자료 빌드를 하면 이상합니다.

0

133

1

virtual 소멸자 관련 질문

0

169

1