6

プログラムでDWORD、CString、およびBYTEを広く使用しているC++ライブラリを変換しようとしていますが、現在、コードをC++ Win32ライブラリからLinuxプログラムに変換しています。また、これを行うために openSUSE 12.3 と Anjuta IDE を使用しています。DWORD には unsigned int を、CString には string を、BYTE の代わりに unsigned char を使用する必要があると思います。

4

4 に答える 4

12

CStringに直接変換されるわけstd::stringではありませんが、おおむね同等です。

BYTEさすがです。unsigned char_ です。DWORDunsigned intWORDunsigned short

コードを修正するために必ず使用する必要がtypedef actual_type WINDOWS_NAME;あります。型を置き換えるためにどこにでも行ってはいけません。「wintypes.h」などと呼ばれる新しいヘッダーファイルを追加し、「windows.h」が使用されているすべての場所にそれを含めます。

コメントの編集: ではCString、それがどのように使用されるか (および、コードが MS と呼ばれる「Unicode」文字列または「ASCII」文字列を使用しているかどうか) に大きく依存します。CStringクラスを作成して、その中で使用したくなるでしょうstd::string。ほとんどの場合、同等のstd::string関数を呼び出すだけで実行できますが、関数によってはもう少しプログラミングが必要な場合があります。これCStringも、実際に使用されているメンバー関数によって異なります。

の場合LP<type>、これは へのポインタにすぎない<type>ためtypedef BYTE* LPBYTE;typedef DWORD* LPDWORD;と はそれを行います。

于 2013-04-30T10:01:11.047 に答える
2

<stdint.h> の uint32_t と uint8_t を DWORD と BYTE に使用し、通常の char * または const char * を文字列 (または C++ の std:string クラス) に使用することをお勧めします。

おそらく最善の考えは、既存のコードに typedef を使用することです。

typedef unsigned char             BYTE;

これらは簡単に変更できます。

char、int、long を使用するコードを書き直す場合、(u)intX_t 型が便利で、定義されたサイズが必要でした。

于 2013-04-30T10:04:48.107 に答える
1
typedef unsigned long DWORD;
typedef unsigned char BYTE;

CString -> maybe basic_string<TCHAR> ?
于 2013-04-30T10:01:03.530 に答える