2011-04-10 6 views
1
typedef wchar_t WCHAR buf[1024] ; // code from C++ dll 

위 코드 행을 C#으로 정의하는 방법은 무엇입니까?변환 유형

+1

'WCHAR'이란 무엇입니까? – AnT

답변

2

typedef는 유형, 또 다른 이름의 별칭 일뿐입니다. C#에서는 별칭이 없습니다. 이 선언 넌 PInvoke를 선언에서 일반 문자 []를 사용하여 상술 한 바와 같이 할당 된 배열을 전달할 것이다 그렇지

char[] buf = new char[1024]; 

다소 동일하다. 나는이 코드에주의를 기울일 것이며, 전역 네임 스페이스에 식별자 "buf"를 추가하는 것은 문제를 요구하고있다.

0

C#에는 typedef가 없으므로 C#에서 해당 줄을 쓸 수 없습니다. 아마도 당신이하고 싶은 것을 우리에게 말하면 해결책이있을 것입니다. 그러나 귀하의 질문에 대한 대답은 전혀 아닙니다!

+0

C++에서 입력 한 이전 줄과 C에서 Pinvoke를 사용해야합니다 # –

+0

@ user689851 : 제공 한 줄은 * C++이 아닙니다. – AnT

1

WCHAR의 정의가 없으면 게시 한 코드에 대해 아무 말도 할 수 없습니다. 그러나 WCHAR이 일종의 typename이라고 가정하면 게시 한 코드가 유효한 C++ 코드가 아닙니다. 단순히 C++ 코드로 컴파일되지 않습니다.

동시에 "C++ dll"의 일부라고 주장하는 것 같습니다. 원래 코드를 올바르게 재현하지 않았을 가능성이 큽니다. 현재의 형태로는 귀하의 질문이 전혀 의미가 없기 때문에 코드를 업데이트하십시오.

+0

WCHAR은 C#의 일반 문자 인 Wide-char에 대한 매우 일반적인 (Windows®) typedef/매크로입니다. –

+0

@Henk Holterman :'WCHAR'가 와이드 char 형의 typedef/매크로 인 경우 OP의 선언은 이미'wchar_t' 타입을 명시 적으로 포함하고 있기 때문에 무효합니다. 그러나 OP는 그것이 유효한 코드에서 왔다고 주장합니다. 그 코드에 대한 유일한 희망은'WCHAR'이 다른 것을 의미 할 때입니다. – AnT

+0

Andrey, 2 번째 읽기에 맞았습니다.하지만 여전히 Win.h입니다. –