-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# 没有。如果您想要等效的行为,请使用<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 回答