C#和C++在互操作时,会涉及到数据类型对应的问题,这里做一下总结。
因为我只用C#语言,所以表格中的第三列写的是C#,其它.Net平台下的语言也是适用的。
说明:
1. 表格第三列括号中显示的是别名(关键字)。
2.关于使用string还是StringBuilder,可以参考https://www.cnblogs.com/zhaotianff/p/12524947.html
VC++ | Ansi C | C#(CTS) | 说明 |
---|---|---|---|
VOID |
void |
System.Void(void) | void类型,代表函数无返回值。在C++里函数无参数也可以传入void,在C#里不这么做。 |
HANDLE |
void * |
System.IntPtr or System.UIntPtr | 长度:32位(32位系统), 64位(64位系统) |
BYTE |
unsigned char |
System.Byte(byte) | 长度:8位 |
SHORT |
short |
System.Int16(short) | 长度:16位 |
WORD |
unsigned short |
System.UInt16(ushort) | 长度:16 位 |
INT |
int |
System.Int32(int) | 长度:32 位 |
UINT |
unsigned int |
System.UInt32(uint) | 长度:32 位 |
LONG |
long |
System.Int32(int) | 长度:32 位 |
BOOL |
long |
System.Boolean(bool) or System.Int32(int) | 长度:32 位 |
DWORD |
unsigned long |
System.UInt32(uint) | 长度:32 位 |
ULONG |
unsigned long |
System.UInt32(uint) | 长度:32 位 |
CHAR |
char |
System.Char(char) | 字符集:ANSI(多字节) |
WCHAR |
wchar_t |
System.Char(char) | 字符集:Unicode(宽字符) |
LPSTR |
char * |
System.String(string) or System.Text.StringBuilder | 字符集:ANSI(多字节) |
LPCSTR |
const char * |
System.String(string) or System.Text.StringBuilder | 字符集:ANSI(多字节) |
LPWSTR |
wchar_t * |
System.String(string) or System.Text.StringBuilder | 字符集:Unicode(宽字符) |
LPCWSTR |
const wchar_t * |
System.String(string) or System.Text.StringBuilder | 字符集:Unicode(宽字符) |
FLOAT |
float |
System.Single(float) | 长度:32 位 |
DOUBLE |
double |
System.Double(double) | 长度:64 位 |