-3

C ++を学ぶプロのC#プログラマーとして、データ型をC#と同じに保ちたいと思います。これに役立つヘッダーファイルを作成しました。私が知りたいのはそれが正しいかどうかです。

// boolean
//#DEFINE bool char
//#DEFINE true 0x01
//#DEFINE false 0x00

// 8-bit integers
#DEFINE byte unsigned char
#DEFINE UInt8 unsigned char
#DEFINE Byte unsigned char
#DEFINE sbyte char
#DEFINE Int8 char
#DEFINE SByte char

// 16-bit integers
#DEFINE ushort unsigned short int
#DEFINE UInt16 unsigned short int
#DEFINE short short int
#DEFINE Int16 short int

// 32-bit integers
#DEFINE uint unsigned int
#DEFINE UInt32 unsigned int
//#DEFINE int int
#DEFINE Int32 int

// 64-bit integers
#DEFINE long long long
#DEFINE Int64 long long
#DEFINE ulong unsigned long long
#DEFINE UInt64 unsigned long long

// 32-bit floating point
//#DEFINE float float
#DEFINE Single float

// 64-bit floating point
//#DEFINE double double
#DEFINE Double double
4

2 に答える 2

10

C ++の組み込み型には実装定義のサイズがありますが、C#にはありません。同等の動作が必要な場合は、のtypedefを使用して<cstdint>ください。バイトだけでなく、ビット数も!また、そうでcharある場合とそうでない場合がありますsigned-signed char代わりに使用してください。

あなたがしていることは何でもひどい考えのように聞こえますが。ばかげたハイブリッド言語ではなく、C++を学ぶだけです。

于 2012-05-07T03:43:49.657 に答える
6

恐ろしいスタイルを除けば、これらのマクロは期待どおりに機能しません。

#define long long long

あらゆる種類の問題が発生しやすいです。

http://ideone.com/Jg9DK

マクロ定義の順序を逆にしても、問題が完全に修正されるわけではありません。

http://ideone.com/45wUS

同様の問題が発生します

#define short short int

http://ideone.com/dERGm

于 2012-05-07T04:25:53.817 に答える