プログラムでDWORD、CString、およびBYTEを広く使用しているC++ライブラリを変換しようとしていますが、現在、コードをC++ Win32ライブラリからLinuxプログラムに変換しています。また、これを行うために openSUSE 12.3 と Anjuta IDE を使用しています。DWORD には unsigned int を、CString には string を、BYTE の代わりに unsigned char を使用する必要があると思います。
4 に答える
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;と はそれを行います。
<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 型が便利で、定義されたサイズが必要でした。
typedef unsigned long DWORD;
typedef unsigned char BYTE;
CString -> maybe basic_string<TCHAR> ?