C++ 谁能给我解释一下这个密码吗

C++ 谁能给我解释一下这个密码吗,c++,C++,它只是一个常量的定义(aka defines),取决于#define八位 若定义了8位,则WORD表示无符号短,WORDLENGTH为4。否则,字的长度是无符号的,字长也是4。此外,除非您在WIN32系统上且未使用GCC,否则WORD64将被定义为unsigned long long。所有“代码”都会为您拥有的任何“实时”代码设置预处理器符号。如果在预处理该代码之前定义了一个名为8位的符号,它会相应地设置WORD和WORDLENGTH(尽管WORDLENGTH的值可疑),如果尚未定义八位,它将以

它只是一个常量的定义(aka defines),取决于#define八位


若定义了8位,则WORD表示无符号短,WORDLENGTH为4。否则,字的长度是无符号的,字长也是4。此外,除非您在WIN32系统上且未使用GCC,否则WORD64将被定义为unsigned long long。

所有“代码”都会为您拥有的任何“实时”代码设置预处理器符号。如果在预处理该代码之前定义了一个名为
8位
的符号,它会相应地设置
WORD
WORDLENGTH
(尽管
WORDLENGTH
的值可疑),如果尚未定义
八位
,它将以不同的方式设置值。

关于此代码,首先要注意的是,所有代码实际上都不会编译为C。每一行不是空格或注释都以磅符号(
)开头,这意味着它们是预处理器指令。预处理器指令甚至在将代码提交给编译器之前就修改了代码。有关预处理器指令的更多信息,请参阅

现在我们了解了很多,让我们看看代码:


如果未定义宏
8位
,请定义另一个名为
32位
的宏。这很可能是指处理器上一个字的位数。此代码旨在实现跨平台,这意味着它可以在多个处理器上运行。您发布的代码片段与管理不同的字宽有关


如果定义了宏
三十二位
,则将
定义为
无符号长
,其
字长
为4个字节。注意,这句话不一定正确,因为C标准只保证
long
int
一样长



如果这是32位Windows平台且GNU C编译器不可用,则将Microsoft特定的数据类型用于64位字(
unsigned\u int64
)。否则,请使用GNU C数据类型(
unsignedlong-long


每个
#if
#ifdef
指令必须由相应的
#endif
匹配,以描述条件部分的结束位置。此行结束前面所做的
#ifdef thirty2u位
声明



如果目标处理器的字宽为8位,则将
字定义为
无符号短
,并将
字长定义为4(同样,可能以字节为单位)。

实际上是这样的。将此代码包含在某些源代码中,您可以在其中使用“WORD”。@tobias langner,我的意思是代码没有任何可执行语句。:)这段代码几乎是胡说八道,所以忘了它,不要使用它(或修复它)。+1注意到
无符号短的单词的字长为4是非常可疑的。“GNU C编译器不可用”。。。更重要的是GNUC编译器不是编译代码的人…;-)。不管怎样,+1是一个好的,耐心的解释。
#ifndef EIGHT_BIT
#define THIRTYTWO_BIT // default 32 bit
#endif

#ifdef THIRTYTWO_BIT
#define WORD unsigned long
#define WORDLENGTH 4

#if defined(WIN32) && !defined(__GNUC__)
#define WORD64  unsigned __int64
#else
#define WORD64  unsigned long long
#endif

// THIRTYTWO_BIT
#endif


#ifdef EIGHT_BIT

#define WORD unsigned short
#define WORDLENGTH 4

// EIGHT_BIT
#endif
#ifndef EIGHT_BIT
#define THIRTYTWO_BIT // default 32 bit
#endif
#ifdef THIRTYTWO_BIT
#define WORD unsigned long
#define WORDLENGTH 4
#if defined(WIN32) && !defined(__GNUC__)
#define WORD64  unsigned __int64
#else
#define WORD64  unsigned long long
#endif
// THIRTYTWO_BIT
#endif
#ifdef EIGHT_BIT

#define WORD unsigned short
#define WORDLENGTH 4

// EIGHT_BIT
#endif