Win32的数据类型equivalant在Linux中(Win32 data types equiv

2019-09-01 11:45发布

我试图转换这是在程序中使用广泛DWORD,CString的和BYTE一个C ++库,现在我从C ++的Win32库转换的代码到Linux程序。 另外我使用的openSUSE 12.3和Anjuta的IDE做到这一点,请帮助我,我应该使用上述类型的哪种类型? 我想我应该用unsigned int类型为DWORD和字符串CString的和无符号的字符,而不是字节是不是?

Answer 1:

CString不会直接转换成std::string ,但它是一个大致相当于。

BYTE确实是unsigned charDWORDunsigned intWORDunsigned short

你一定要使用typedef actual_type WINDOWS_NAME; 修复代码了,不经过任何地方,以取代类型。 我想补充一个新的headerfile被称为像“wintypes.h”,以及包括无处不在“WINDOWS.H”一词。

编辑发表评论:有了CString ,它实际上取决于如何使用它(和代码是否使用MS什么所谓的“统一”或“ASCII”字符串)。 我会很想创建一个类CString ,然后使用std::string内部的。 它的大部分或许可以通过简单地调用相当于做std::string的功能,但是有些功能可能需要一些更多的节目-再次,它依靠什么成员函数CString的实际使用。

对于LP<type> ,这仅仅是一个指向<type> ,所以typedef BYTE* LPBYTE;typedef DWORD* LPDWORD; 将这样做。



Answer 2:

typedef unsigned long DWORD;
typedef unsigned char BYTE;

CString -> maybe basic_string<TCHAR> ?


Answer 3:

我会建议使用uint32_t的和uint8_t从DWORD和BYTE和正常的char *或为const char *字符串(或STD:字符串类C ++)。

也许最好的思想是利用现有的代码类型定义:

typedef unsigned char             BYTE;

这些可以很容易地改变。

如果你重写代码使用CHAR,INT,长期是有益的和(U)intX_t类型,是你需要一个定义的大小。



Answer 4:

  • DWORD = uint32_t
  • BYTE = uint8_t

这些类型是不OS细节,并且加入到C ++ 11。 您需要include <cstdint>得到它们。 如果你有一个旧的编译器可以使用升压/ cstdint,这是唯一的标题。

使用std::string代替CString ,但你需要改变一些代码。

有了这些改变你的代码应该编译在Windows和Linux。



文章来源: Win32 data types equivalant in Linux
标签: c++ linux