WinAPI Singletone (2)

CJB_ny·2022년 8월 25일
0

WinAPI

목록 보기
8/79
post-thumbnail

객체 자체를 정적으로

정적 멤버 함수를 만들어서 '객체'없이 접근이 가능하도록 하고

정적 멤버 함수 내부에 정적 멤버 변수(객체)를 만든다.

=> '데이터'영역에 올라감 ㅇㅇ.

또한 이 객체는 정적 멤버 함수만으로만 접근이 가능함.

core의 주소를 반환한다.

싱글톤보다 엄청 간단하노.

중요한 사실 ❗

정적 멤버 함수로만 접근이 가능하다고 했지

return &core했는데 받아온 주소로 접근이 불가능한 것은 아니다.

(포인터의 장점)

객체를 static으로 했을 때 장점.

'해제'와 관련된 부분을 신경 쓸 필요 있을까?

ㄴㄴ. 없다.

반대로 생각하면 지울수가 없다.

원할 때 해제할 수 없다.

싱글톤 힙 vs 싱글톤 static객체 데이터

두가지 중 뭐를 선호?

정답은 나도 몰라~ 상황에 따라 다르게 사용해~

매크로

이정도의 함수는 호출비용이 아깝다.

그래서 이것을 매크로로 만들자.

Add 라는 매크로를 만들어서 사용하자. 하면은

그러면 이부분이 이제

'컴파일'이 진행되기 전에 전처리기 부분은

이렇게 바뀌고 '컴파일'이 진행될 것이다.

매크로 사용 주의점 ❗

이렇게하면 값이 몇이고? => 300임.

이러면 '함수'로 생각하면 안되고 적힌대로 생각해야됨.

전치리기 == 코드 치환.

치환하기 때문에 '연산자 우선순위'에 의해서

120이 된다.

즉,

결과값을 돌려받는 식으로 생각하면 안된다.

다시 매크로 작성

미리 컴파일 된 헤더 ❗

필요한 곳마다 #include "define.h"귀찮다.

프젝 속성 -> c/c++ -> 미리 컴파일된 헤더 사용

이렇게하면 '규칙'생김.

"모든 .cpp파일은 pch.h 참조 해야한다."

64비트면 컴파일 에러남.

컴파일 속도를 올리기위해서 만들어진 시스템임.

STD같은애들 컨테이너 같은 애들은 코드를 살펴볼 필요없다.

미리 컴파일된 애들쪽에는 완성되어 있는 애들을

nclude로 넣어주면 재확인 안한다.

왜씀?

필요한 헤더를 일일히 참조하는게 아니라

필요한 헤더를 미리 참조를 하고

미리 컴파일할 헤더에다가 필요한 것들을 include한다.

미리 컴파일할 헤더에는 "컴파일"할 필요가 없는 애들은

컴파일을 진행을 안하니까..

컴파일 속도가 올라감.

그리고 이제 부터는

.cpp파일에서 #include pch.h가 자동으로 추가가된다.

FAILED 확인

일단 무조건 실패뜨게

이렇게 해주고

윈도우 생성해주고 실행하기 전에

FAILED함수안에다가 init함수 호출한다.

MessageBox는 그냥 메세지띄우는 박스임.

해상도 조절

전역변수로 메인 윈도우 ID 값들고있는애랑

내자 지정한 해상도를 init함수에 인자로 넣어 줄 수 있게 변경하자.

이렇게 해주고

main에서

ID값이랑 PINT구조체 넘겨주도록 하자.

profile
https://cjbworld.tistory.com/ <- 이사중

0개의 댓글