성우형 목소리너무좋아요

운영체제 

모델 

char 

short 

int 

long 

ptr

windows 

LLP64 

1바이트 

2바이트 

4바이트 

4바이트 

8바이트 

UNIX 

LP64 

1바이트 

2바이트 

4바이트 

8바이트 

8바이트 



압도적감사


64비트와 32비트 공존의 문제점


절대 기본자료형으로 포인터를 캐스팅하지말자


1
2
int arr[10= { 0 };
int arrVal = (int)arr;
cs


물론 32비트에서도 좋은건 아니다


Windows 스타일 자료형


반드시 외울 필요는 읍다


Polymorphic 자료형


1
2
3
4
5
6
7
8
9
10
11
#if defined(_WIN64)
    typedef __int64 LONG_PTR;
    typedef unsigned __int64 ULONG_PTR;
    typedef __int64 INT_PTR;
    typedef unsigned __int64 UINT_PTR;
#else
    typedef long LONG_PTR;
    typedef unsigned long ULONG_PTR;
    typedef int INT_PTR;
    typedef unsigned int UINT_PTR;
#endif
cs


왜 UINT_PTR인데 *가 읍냐?

 -> 포인터 연산을 할 때, 포인터 값으로 무언가 연산을 해야할 때 사용하라고 _PTR을 붙였다.


예제


1
2
3
4
5
6
7
8
9
10
11
12
UINT CalDistance(UINT a, UINT b)
{
    return a - b;
}
int _tmain(void)
{
    INT val1 = 10;
    INT val2 = 20;
    _tprintf(_T("position &d, %d \n"), (UINT)&val1, (UINT)&val2);
    _tprintf(_T("distanc : &d \n"), CalDistance((UINT)&val1, (INT)&val2));
    return 0;
}
cs


1
2
3
4
5
#if defined(_WIN64)
    typedef unsigned __int64 UINT_PTR;
#else
    typedef unsigned int UINT_PTR;
#endif
cs



오류의 확인


GetLastError 함수와 에러코드


윈도우즈 프로그래밍에선 에러 로그를 저장하기 위에 전역 공간에(아마 데이터 공간?) 로그를 저장시키는데 이 에러 로그에 접근하는 함수가 바로 GetLastError 함수다.


 MSDN 홈페이지에 에러 코드별로 다 설명이 되어있으니 필요하면 참고


1
2
3
4
5
6
7
8
9
10
11
12
13
14
int _tmain(void)
{
    HANDLE hFile =
        CreateFile(        //Windows system 함수,
            _T("ABC.DAT"), GENERIC_READ, FILE_SHARE_READ,
            NULL, OPEN_EXISTING, FILE_ATRIBUTE_NORMAL,
            NULL);
    if(hFile == INVALID_HANDLE_VALUE)
    {
        _tprintf(_T("error code: %d \n"), GetLastError());
        return 0;
    }
    return 0;
};
cs


실행 결과

1 error code: 2


여기서 ABC.DAT이란 파일은 없다. 걍 없는 파일을 불러오려고 했을 때 어떤 오류가 나오는지 확인하는 것


INVALID_HANDLE_VALUE는 에러가 발생했는지를 체크하는 함수가 아니라, 에러가 있을때 그 에러가 있음을 알려주는 함수다.


또한, CreateFile 함수 호출 후 바로 GetLastError 함수가 호출되었는데, 이렇듯 GetLastError는 LastError이기때문에 특정 함수 호출 후 바로 GetLastError함수를 호출해야 그 기능을 온전히 할 수 있다.

'운영체제 > 윈도우 시스템' 카테고리의 다른 글

프로세스, 스케줄러  (0) 2019.09.25
컴퓨터를 디자인하자  (0) 2019.09.23
문자셋 SBCS, MBCS, WBCS  (0) 2019.09.19
Stored Program Concept  (0) 2019.09.18
힙 단편화, Windows Low Fragmentation Heap(LFH)  (0) 2019.09.18

+ Recent posts