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

如何在C#中定義上面的代碼行?轉換類型

+1

WCHAR是什麼? – AnT 2011-04-10 20:21:18

回答

2

typedef只是一個類型的別名,另一個名字。在C#中沒有別名。此聲明,否則有點相當於

char[] buf = new char[1024]; 

你可以使用一個普通的char []在一個PInvoke的聲明,並通過已分配如上所示的陣列。我會對這段代碼持謹慎態度,在全局命名空間中添加一個標識符「buf」會引起麻煩。

0

C#沒有typedef,所以你不能在C#中寫這行。如果你告訴我們你想做什麼,也許有一個解決方案。但是你的問題的答案是:完全不是!

+0

上一行輸入C++,我需要在C#中使用Pinvoke – 2011-04-10 19:55:33

+0

@ user689851:您提供的行是* not * C++,再一次。 – AnT 2011-04-10 21:23:13

1

沒有WCHAR的定義,沒有辦法對您發佈的代碼進行任何說明。但是,假設WCHAR是某種類型的名稱,則您發佈的代碼不是有效的C++代碼。它不會像C++代碼那樣編譯。

同時你似乎聲稱它來自一些「C++ dll」。很可能你沒有正確地重現原始代碼。更新代碼,因爲在目前的形式下,它使你的問題完全沒有意義。

+0

WCHAR是一個非常常見的(Windows?)typedef /宏,用於Wide-char,它是C#中的一個普通字符。 – 2011-04-10 20:39:07

+0

@Henk Holterman:如果'WCHAR'是寬char類型的typedef /宏,那麼OP的聲明是無效的,因爲它已經明確包含'wchar_t'類型。然而,OP聲稱它來自有效的代碼。該代碼的唯一希望是「WCHAR」代表別的東西。 – AnT 2011-04-10 21:08:47

+0

安德烈,二讀時你是對的,但它仍然是一個Win.h的東西。 – 2011-04-10 21:17:21