我听说在32位计算机(1990~2000?(中必须使用如下8大小的数据;(我听说……当时没有8号的型号……(他们曾经是这样的;
// 8 size
typedef union _LARGE_INTEGER {
struct {
DWORD LowPart;
LONG HighPart;
} DUMMYSTRUCTNAME;
struct {
DWORD LowPart;
LONG HighPart;
} u;
LONGLONG QuadPart; // I'm not sure of this part;
} LARGE_INTEGER;
所以我想试着为自己做一个16号的这样用可以吗??
// 16 size
typedef union INTERGER128 {
struct {
LONGLONG LowPart;
LONGLONG HighPart;
} u;
} _INTERGER128;
是否有16大小数据的类型?
没有保证为16字节的标准基本类型。在一些语言实现中,有一个128位整数类型作为语言扩展。
typedef union INTERGER128 { LONGLONG LowPart; LONGLONG HighPart; } _INTERGER128;
我认为你建议的联合在任何情况下都不会有用。此外,该并集的大小将与LONGLONG
相同。您还没有展示它是如何定义的,但如果它是long long
,那么在大多数系统上,它是64位类型;而不是128。
您可以定义一个自定义的128位类,如下所示:
struct INTERGER128 {
std::uint64_t low;
std::uint64_t high;
};
p.S._INTERGER128
和_LARGE_INTEGER
标识符保留给语言实现。你应该用另一个名字。或者不要定义一个毫无意义的别名。
p.p.S.有一个基于标准库的宽整数的建议:p0539
我使用了另一种方法来创建一个16大小的可变
__declspec(align(16)) struct aa {
long long a;
long long b;
char c;
}
这样你就可以在structs 中制作一个16大小的填充