2016-06-23 10 views
0

나는 내 문제와 관련된 내용 만 제공합니다. 이 컴파일되지 않는 이유를 모르겠어요 : 나는 TDM의 GCC 64bit를 ++ DevC에 컴파일CreatePolygonRgn 및 const POINT *

POINT ptVertex[5]; 

ptVertex[0].x = 180; 
ptVertex[0].y = 80; 
ptVertex[1].x = 100; 
ptVertex[1].y = 160; 
ptVertex[2].x = 120; 
ptVertex[2].y = 260; 
ptVertex[3].x = 240; 
ptVertex[3].y = 260; 
ptVertex[4].x = 260; 
ptVertex[4].y = 160; 

CreatePolygonRgn(&ptVertex, 5, ALTERNATE) 

및 오류는 다음과 같습니다

는 변환 할 수 없습니다 'POINT () [5] {일명 tagPOINT () [5]} HRGN '에서' '인수'1 CONST 포인트 * {일명 const를 tagPOINT의 *} '에서'__ * CreatePolygonRgn (CONST 포인트 *, INT, INT) '

사람을 찾을 수 있다면 내 잘못. 감사.

+1

는 [mcve] 제공한다. 그리고 두 가지 다른 ** 언어 C 또는 C++ 중 하나를 선택하십시오! – Olaf

+0

함수'CreatePolygonRgn'의 서명은 무엇입니까? 즉 선언은 무엇입니까? – s7amuser

+0

이것은 서명입니다. WINGDIAPI HRGN WINAPI CreatePolygonRgn (CONST POINT * pptl, int cPoint, int iMode) – user3511595

답변

3

CreatePolygonRgn()은 배열의 첫 번째 POINT에 대한 포인터와 해당 배열의 항목 수를 예상합니다. 그러나 첫 번째 요소가 아니라 배열 자체에 대한 포인터를 전달하고 있습니다. & 연산자를 적용하기 전에 배열의 첫 번째 요소에

  1. 지수 : 정적 배열로,

    CreatePolygonRgn(&ptVertex[0], 5, ALTERNATE) 
    
  2. 간단히 전부 & 연산자를 제거가 포인터로 저하 될 수 있습니다 당신도 첫번째 요소 :

    CreatePolygonRgn(ptVertex, 5, ALTERNATE) 
    
0

함수에 요소의 주소와 길이가 필요한 반면 배열의 주소는 5 개로 전달합니다.