worldint
mathengi
worldint
전체 방문자
오늘
어제
  • 분류 전체보기 (152)
    • infra, cloud (4)
      • aws (4)
    • TIL,WIL(일간,주간 회고) (57)
    • 컴퓨터 공학 (5)
      • 정보통신 (3)
      • 컴퓨터 구조 (2)
    • Math (1)
      • linear algebra (0)
      • 명제와 집합 (1)
    • Operating System (8)
      • Linux Ubuntu (1)
    • programming (66)
      • c , c++ (9)
      • c# (0)
      • java (2)
      • javascript (14)
      • Python (4)
      • github (1)
      • programing terms (12)
      • html, css (2)
      • docker (3)
      • algorithm_datastructure (5)
      • database (11)
      • flutter(dart) (2)
    • 항해99 부트캠프 (7)
      • 사전교육 (7)
    • 보안관련 (1)

블로그 메뉴

    공지사항

    인기 글

    태그

    • ci/cd
    • flutter #provider #error
    • ec2 #코드디플로이 #리눅스
    • MongoDB
    • docker
    • Blue/Green
    • nodejs
    • AWS
    • EC2
    • 디비데드락
    • NoSQL
    • node
    • NVM
    • Javascript
    • CloudFront
    • MONGOOSE
    • db데드락

    최근 댓글

    최근 글

    티스토리

    hELLO · Designed By 정상우.
    worldint

    mathengi

    [테트리스개발]BOOL WINAPI 반환타입
    programming/c , c++

    [테트리스개발]BOOL WINAPI 반환타입

    2021. 7. 11. 03:21

    테트리스를 개발하다가

    콘솔창에서 커서위치를 지정해주기 위해<window.h>를 포함시켜야되서 

    저런 복잡한 헤더파일들은 어떻게 되어있나 궁금해서 <windows.h>파일을 열어보았다.

    찾아찾아가면 <consoleapi2.h> 라는 파일에 아래와 같이 선언되어있는데

    보면 SetConsoleCursorPosition() 함수앞에 기본 반환타입(int, char double 등등)말고 처음보는 것 들이 많이있다

    데이터타입말고도 여러개를 쓸수있다는것도 신기했고 

    저 과로안에 있는 매개변수들도 데이터 타입앞에 _in_ 이런것들도있고 이게 뭐지

     

    구글링을 통해 알아보니 일단 WINBASEAPI는 <apisetcconv.h>에

    #define WINBASEAPI DECLSPEC_IMPORT 이런식으로 치환되고

     DECLSPEC_IMPORT이거는 또 <rpc.h>에서

    #define DECLSPEC_IMPORT __declspec(dllimport) 이렇게 나와있다

    매크로로 치환은 이런식으로 여러번 가능한거같다.

    나머지들도 다 찾아보면

    BOOL이 int형 데이터타입을 치환한거고

    WINAPI는 __stdcall 이렇게 나온다

    풀어쓰면 

    __declspec(dllimport) int __stdcall SetconsoleCursorPosition(_in_ 블라블라,블라블라);

    이거인데 

     

    dll관련키워드(__declspec(dllimport)   반환타입    호출규격(__stdcall)   함수명(SAL(_in_) 매개변수);

    이런 형태로 되어있다.

     

    기본적으로 배운 

    반환타입 함수명(매개변수1,매개변수2);

    이 구조보다 더 복잡하게 되어있다

     

    저런 이상한 것들을 확장 속성이라고 하는것 같은데 c언어 표준은 아니라고한다.

    확장속성을 사용하면 컴파일러가 저 속성들을 보고 약간의 힌트를 얻어 더 좋은 결과물을 얻는다.

     

    'programming > c , c++' 카테고리의 다른 글

    [테트리스개발] 콘솔창의 종료문구가 게임보드 중간에 낀 현상  (0) 2021.07.12
    [테트리스개발]c언어 난수생성  (0) 2021.07.12
    [테트리스개발] 테두리 그리기  (0) 2021.07.04
    (c언어) 변수에 대하여 알아야할것  (0) 2021.05.14
    tpyedef 키워드로 구조체만들기  (0) 2021.05.12
      'programming/c , c++' 카테고리의 다른 글
      • [테트리스개발] 콘솔창의 종료문구가 게임보드 중간에 낀 현상
      • [테트리스개발]c언어 난수생성
      • [테트리스개발] 테두리 그리기
      • (c언어) 변수에 대하여 알아야할것
      worldint
      worldint
      공부한 내용들, 트러블 슈팅 용 블로그

      티스토리툴바