作为一名学习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
答案 0 :(得分:10)
C ++中的内置类型具有实现定义的大小,而C#没有。如果您想要等效行为,请使用<cstdint>
中的typedef。不仅是字节,还有位数!另外,char
可能是signed
,也可能不是signed char
- 而是使用{{1}}。
虽然你在做什么听起来像是一个糟糕的主意。只是学习C ++,而不是一些愚蠢的混合语言。
答案 1 :(得分:6)
除了可怕的风格,这些宏甚至没有按照你期望的方式工作。
#define long long long
容易出现各种各样的问题。
颠倒宏定义的顺序并不能完全解决问题。
出现类似问题
#define short short int