Microsoft MVP성태의 닷넷 이야기
문법에 맞지 않는 learn.microsoft.com의 C++ 소스 코드 [링크 복사], [링크+제목 복사]
조회: 4945
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

문법에 맞지 않는 learn.microsoft.com의 C++ 소스 코드

C#에서 Win32 API 연동을 위해 Interop 구조체를 docs 문서에서 참고했는데,

IORING_HANDLE_REF structure (ioringapi.h)
; https://learn.microsoft.com/en-us/windows/win32/api/ioringapi/ns-ioringapi-ioring_handle_ref

다음과 같은 형식으로 코드가 실려 있습니다.

typedef struct IORING_HANDLE_REF {
  void            IORING_HANDLE_REF(
    HANDLE h
  );
  void            IORING_HANDLE_REF(
    UINT32 index
  );
  IORING_REF_KIND Kind;
  union {
    HANDLE Handle;
    UINT32 Index;
  } HandleUnion;
  HandleUnion     Handle;
} IORING_HANDLE_REF;

저런 구문이 최근 C/C++ 표준에 가능해졌나... 하고 잠시 헤맨 끝에 결국 그냥 Windows SDK에 포함된 헤더 파일을 보고 저것이 docs 웹 사이트에 올려지는 과정에서 잘못 전처리된 코드라는 것을 알게 되었습니다. 즉, 원래는 이런 코드였던 것입니다.

typedef struct IORING_HANDLE_REF
{
    explicit IORING_HANDLE_REF(HANDLE h)
        : Kind(IORING_REF_KIND::IORING_REF_RAW)
        , Handle(h)
    {}

    explicit IORING_HANDLE_REF(UINT32 index)
        : Kind(IORING_REF_KIND::IORING_REF_REGISTERED)
        , Handle(index)
    {}

    IORING_REF_KIND Kind;
    union HandleUnion
    {
        HandleUnion(HANDLE h)
            : Handle(h)
        {}

        HandleUnion(UINT32 index)
            : Index(index)
        {}

        // Handle to the file object if Kind == IORING_REF_RAW
        HANDLE Handle;

        // Index of registered file handle if Kind == IORING_REF_REGISTERED
        UINT32 Index;
    } Handle;
} IORING_HANDLE_REF;

그러니, docs 문서를 너무 믿지 마세요. ^^









[최초 등록일: ]
[최종 수정일: 4/20/2023]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




1  2  3  4  5  6  7  8  9  10  11  12  [13]  14  15  ...
NoWriterDateCnt.TitleFile(s)
227정성태1/29/200916867파수닷컴 DRM, fph.exe 제거하는 방법
226정성태1/15/2009134944GB USB 메모리로 Windows 7 베타를 UMPC 에 설치하는 방법 [1]
225정성태1/11/200925077nProtect 서비스 죽이기
224정성태1/11/200912627Windows 7 - DivX Codec 기본 내장
223정성태1/9/200912708작업 관리자 화면 - 96개의 코어 + 512GB 메모리
222정성태1/7/200912890비스타 - 유령 윈도우 제거 방법
221정성태1/4/200912974Q1 Ultra + Windows 7 [1]
220정성태1/3/200912647숫자가 주는 인식의 오류
219정성태1/1/2009135962008년 인기 순위 정리
218정성태1/1/200915044Internet Explorer용 RFC 검색 제공자
217정성태12/21/200824606개발자를 괴롭히는 nProtect 개발자 [1]
216정성태12/21/200813032Dynamic DNS 서버에 등록하는 과정을 없애는 방법
215정성태12/8/200812387TDD가 좋은 줄 알면서도 안하는 이유
214정성태12/2/200814327Outlook HTTP 접속 오류
213정성태11/30/200824085실행 시간을 제한하는 NT 서비스파일 다운로드1
211정성태10/30/200815567서울시의회 전자회의시스템 프로젝트 프로그램 개발자 폭행사건
210정성태10/19/200812529BGT 2008
209정성태10/4/200812046At least they’re consistent
208정성태10/2/200812714MSDN Magazine 기사 인쇄
207정성태7/25/200812524막연한 거부감 [1]
206정성태7/1/200811667변화... [1]
205정성태6/26/200812088NASA 과학자 “온난화, ‘티핑 포인트’ 임박했다” [1]
204정성태6/23/200811611Interface-Driven Development [1]
203정성태5/22/200812095돌부처의 심장을 뛰게 하라 [2]
202정성태4/16/200811810[디지털데일리] 기업 블로그, 쉽게 생각했다간 낭패 [2]
201정성태4/11/2008118542008년 4월 10일 - IE ActiveX 활성화 패치 포함
1  2  3  4  5  6  7  8  9  10  11  12  [13]  14  15  ...