プログラムで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
_ です。DWORD
unsigned int
WORD
unsigned 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> ?