본문 바로가기

C++24

[C++] 미리 컴파일된 헤더 미리 컴파일된 헤더 헤더를 미리 컴파일 해 두는 것 자주 변경되지 않는 긴 소스를 미리 컴파일 하여 컴파일 시간 단축 가능 미리 컴파일 시킨 다음 파일에 저장해서 소스가 변경되지 않는다면 저장시킨거 가져와서 쓰게 된다. windows.h나 iostream과 같은 것들을 주로 사용 사용법 프로젝트 속성 - C/C++ 미리 컴파일된 헤더 - 만들기 프로젝트 속성 - C/C++ 미리 컴파일된 헤더 파일 - stdafx.h 혹은 pch.h 입력한 헤더 파일의 이름대로 stdafx.h 혹은 pch.h 파일을 생성한 다음 미리 컴파일을 하고 싶은 파일을 include시켜 사용하면 된다. 사용되는 cpp 파일에 #include "pch.h"를 선언하고 사용하면 된다. 만일 사용하는 cpp에 미리 컴파일된 헤더를 선언.. 2022. 11. 14.
[C++] 멀티바이트, 유니코드 아스키코드 항상 1바이트, 영어 이외의 프랑스, 스페인, 등등 영어와 비슷한 언어만 확장형으로 사용 나머지는 사용 불가 유니코드 항상 문자 하나에 2바이트 공간 확보 utf-8, utf-16, utf-32로 나눠진다. 각 숫자는 비트를 뜻하고 앞에서부터 차례대로 1byte, 2byte, 3byte 사용한다는 뜻 그런 의미로 1바이트라서 utf-8은 한글 사용 불가, 멀티바이트 한 문자에 할당되는 공간이 일정하지 않음, 영어 : 1바이트, 다국어 : 2바이트 영어 이외의 언어를 사용 wchar은 2바이트, char은 1바이트 TEXT()매크로는 TCHAR과 마찬가지로 들어온 문자열을 설정한 유니코드나 멀티바이트에 맞게 매크로 해줌 TCHAR 사용하면 유니코드 일땐 wchar_t 사용, 그 외엔 char 사.. 2022. 11. 14.
[C++] wstring wstring 여러 나라의 언어를 표현하기 위해 사용하는 전용 string이다. 한 문자를 표현하기 위해서 1byte가 아닌 2,3 그 이상의 byte를 사용하기 때문에 생기는 문제점을 해결하기 위해 사용한다. 예를들면 "홍길동" 을 입력받기 위해 char[3]을 만들면 "ㅎㅗㅇ" 한글자 밖에 받지 못한다. 출력할 때도 마찬가지다 홍을 표현하기 위해 0~2까지 출력해야한다. 이러한 이유로 윈도우 프로그래밍도 w__ 자료형을 쓴다. wstring 외에도 wchar_t 등등과 전용 메소드가 있으니 찾아보길 바란다. 프로젝트의 속성에 문자 집합이 기본은 "유니코드 문자 집합"으로 되어있다. 본인은 wstring이나 그런거 쓰기 싫다 하시는 사람은 "멀티바이트 문자 집합" 으로 바꾸고 string 사용하면 되겠.. 2022. 11. 14.
[WinAPI] 그리기 좌표 좌표를 기준으로 그리게 됨 좌표 x,y 좌표에서의 1은 1픽셀을 의미한다. case WM_PAINT: { PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, &ps); // 렌더링 관련 핸들 받아옴 // DC가 그릴 장소 : hWnd // DC의 기본 펜 색상 : 검정색 // DC의 기본 브러쉬 색상 : 흰색 HPEN hRedPen = CreatePen(PS_SOLID, 1, RGB(225, 0, 0)); // 빨간펜 생성 HBRUSH hGrayBrush = (HBRUSH)GetStockObject(GRAY_BRUSH); // 시스템 제공 회색브러쉬 받아옴 HPEN hDefaultPen = (HPEN)SelectObject(hdc, hRedPen); // 빨간펜 장착, 기존.. 2022. 11. 13.
[WinAPI] Win32API 기본 매개변수의 자료형 앞에 _In_, _In_opt_, _In_ 같은건 SAL 주석이다. SAL주석 - SAL 주석을 사용하면 함수를 사용하는 개발자가 함수를 사용하는 방법을 더 잘 이해할 수 있도록 함수를 더 자세히 설명할 수 있습니다. - 함수의 속성 및 구현에 대한 명확성을 제공 wWinMain 매개변수 _IN_ HINSTANCE hInstance 가상 메모리 안 실행 된 프로세스의 시작 주소 _IN_opt_ HINSTANCE hPrevInstance 가상 메모리 사용 이전에 사용한 것으로 현재는 가상 메모리를 사용하기 때문에 거의 사용하지 않는다. 과거엔 프로세스의 실행 주소를 사용하여 관리할 필요가 있었기에 사용했었던 것 _IN_ LPWSTR lpCmdLine 명령프롬프트로 실행 시 문자열을 주면 .. 2022. 11. 13.
[C++] constexpr constexpr 객체나 함수 앞에 붙여 사용하는 키워드 변수나 함수, 생성자 함수에 대하여 컴파일 타임에 평가될 수 있도록 처리 해줌 따라서 객체나 함수의 리턴값을 컴파일 타임에 값을 알 수 있다. constexpr 변수, 함수의 반환값은 항상 Literal Type 이어야 한다. 함수에 사용 시 가상으로 재정의되거나 상속받지 않은 함수만 사용 가능 constexpr int num = 100; void test(int n) { constexpr int c1 = num +1; // O constexpr int c2 = n + 1; // X const int c3 = n + 7; // O } 컴파일 타임에 모든 값들이 확정되어 있어야 한다. 반면 const는 컴파일 타임에 정해져 있지 않아도 사용 가능 c.. 2022. 11. 13.