2010-06-04 3 views
3

LPDWORD, DWORD 등을 사용하는 C++ 프로그램이 있습니다. GCC를 사용하여 컴파일 할 때 오류가 발생합니다. GCC에서 LPDWORD, DWORD, LPBYTE 및 LPTSTR을 어떻게 처리합니까? Windows 시스템에서 경우GCC의 LPDWORD, LPSTR 핸들

답변

3

, 당신은이 데이터 유형은 Windows API datatypes 전형적인

#include <windows.h> 

사용할 수 있습니다.

다른 플랫폼을 사용하는 경우 typedef 데이터 유형을 사용할 수 있지만 문제가 계속 발생하고 많은 코드를 이식해야 할 수 있습니다.

8
typedef uint32_t* LPDWORD; 
typedef uint32_t DWORD; 
// etc 
+0

LPSTR, LPBYTE에 대한 귀하의 회신에 감사드립니다. –

+1

'typedef char * LPSTR; typedef unsigned char * LPBYTE; ' –

+0

매우 고마워요. –

2

이러한 typedef는 모두 Microsoft의 GCC typedef 버전입니다. 프로그램에 그 중 일부만 가지고 있다면 헤더 파일을 추가하여 GCC의 의미로 변환 할 수 있습니다.

는 마이크로 소프트의 데이터 유형에 대한 자세한 정보를 원하시면이 MSDN 페이지를 참조하십시오 :

http://msdn.microsoft.com/en-us/library/aa383751(VS.85).aspx

5

사람들은 윈도우 특정 헤더 파일 WINDOWS.H에 정의 된 유형입니다. 코드에서 이러한 유형을 사용하는 경우 Windows 전용 함수도 많이 사용되므로 이식 할 수 없습니다. GCC로 코드를 컴파일 할 수 없다는 말은 아닙니다. MinGW port으로 할 수 있지만 Windows에서만 작동합니다.

+0

실제로 이러한 유형은 windev.h에 정의되어 있습니다. windows.h를 포함하면 유형을 얻을 수 있지만 필요하지 않은 추가 선언문을 많이 얻을 수 있습니다. – harper

+0

@harper 함수를 호출하지 않으면 왜 형식이 필요한지 알 수 없습니다. –

+0

물론, 적절한 프로토 타입을위한 모든 헤더 파일을 포함해야합니다. 그러나 BYTE 형식을 운영 체제 또는 특정 기능과 독립적 인 바이트로 사용하는 것이 좋습니다. 그러나 Suriyan Suresh는 이러한 유형에 대한 지원을 요청했습니다. 누락 된 기능 프로토 타입이 발견되지 않았습니다. 따라서 정의를 보유하고있는 파일을 보는 것이 더 적은 작업입니다. – harper