#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
回答
关于此代码的首要注意事项是,它们都不会真正编译到C中。每行不是空格或注释都以井号(#
)开头,这意味着它们是预处理器指令。预处理器指令在将代码写入编译器之前会更改代码。有关预处理器指令的更多信息,请参见this article。
现在我们知道了这么多,让我们来看看通过代码:
#ifndef EIGHT_BIT
#define THIRTYTWO_BIT // default 32 bit
#endif
如果没有定义宏EIGHT_BIT
,定义另一个宏称为THIRTYTWO_BIT
。这很可能是指处理器上一个字中的位数。此代码旨在实现跨平台,这意味着它可以在多个处理器上运行。您发布的代码段涉及管理不同的字宽。
#ifdef THIRTYTWO_BIT
#define WORD unsigned long
#define WORDLENGTH 4
如果宏THIRTYTWO_BIT
被定义,则定义一个WORD
是一个unsigned long
,其具有的WORDLENGTH
4(大概字节)。请注意,这个陈述不一定是正确的,因为C标准只保证long
将至少与int
一样长。
#if defined(WIN32) && !defined(__GNUC__)
#define WORD64 unsigned __int64
#else
#define WORD64 unsigned long long
#endif
如果这是32位Windows平台和GNU C编译器不可用,则使用64位字的微软特定的数据类型(unsigned __int64
)。否则,请使用GNU C数据类型(unsigned long long
)。
// THIRTYTWO_BIT
#endif
每#if
和#ifdef
指令必须通过相应的#endif
匹配来描绘,其中条件段结束。该行结束前面提到的#ifdef THIRTYTWO_BIT
声明。
#ifdef EIGHT_BIT
#define WORD unsigned short
#define WORDLENGTH 4
// EIGHT_BIT
#endif
如果目标处理器具有8位的一个字的宽度,然后定义一个WORD
是一个unsigned short
,并定义WORDLENGTH
为4(再次,大概以字节为单位)。
“,并且GNU C编译器不可用”......这更多的是GNU C编译器不是编译代码的问题...... ;-)。无论如何,+1对于一个好的,耐心的解释。 –
这只是一个定义常量(又名定义),取决于#define EIGHT_BIT。
如果定义了EIGHT_BIT,则WORD表示无符号短符号,WORDLENGTH为4.否则,WORD是无符号长符,WORDLENGTH也是4.此外,WORD64将被定义为无符号long long,除非您在WIN32系统上并且不使用GCC。
所有“代码”是否为所有“实时”代码设置了预处理器符号。如果在对此代码进行预处理之前定义了一个名为EIGHT_BIT
的符号,则它会相应地设置WORD
和WORDLENGTH
(尽管WORDLENGTH
的值可疑),并且如果尚未定义EIGHT_BIT
,它将设置不同的值。
+1,指出对于一个'unsigned short'的WORD,WORDLENGTH 4是非常可疑的。 –
- 1. 任何人都可以解释我这个代码行吗?
- 2. 任何人都可以解释我这个代码的工作
- 3. 任何人都可以解释这个matlab代码给我吗?
- 4. 任何人都可以帮我解释这个python代码吗?
- 5. 任何人都可以向我解释这段代码?
- 6. 任何人都可以解释我的这段代码吗?
- 7. Javascript:任何人都可以解释我这段代码吗?
- 8. 任何人都可以请解释我这段代码?
- 9. 任何人都可以解释这个peudo代码(分区)
- 10. 任何人都可以解释这个TypeScript代码片段?
- 11. 任何人都可以解释这个PHP代码?
- 12. 任何人都可以解释这
- 13. 任何人都可以帮助解释这部分代码?
- 14. 任何人都可以解释这一小块代码?
- 15. 任何人都可以解释这段代码的输出吗?
- 16. 任何人都可以解释我这个Java代码是如何工作的?
- 17. 任何人都可以帮我解决这个代码吗?
- 18. 任何人都可以帮我理解这个代码 - iOS swift
- 19. 任何人都可以让我理解这个MATLAB代码吗?
- 20. 任何人都可以解释这个PHP代码注入攻击给我?
- 21. 任何人都可以解释我StandardScaler?
- 22. 任何人都可以解释我的代码
- 23. 任何人都可以解释我下面的代码。
- 24. 任何人都可以解释我这个错误?
- 25. 任何人都可以向我解释这个sed命令吗?
- 26. 任何人都可以解释我这个正则表达式
- 27. 任何人都可以向我解释这个LabView模拟?
- 28. 任何人都可以解释这个jQuery插件给我吗?
- 29. 任何人都可以用英语向我解释这个吗?
- 30. 任何人都可以解释这个C++循环为我吗?
这段代码什么都不做!它实际上是 – Donotalo
。在某处使用'WORD'的源代码中包含此代码。 –
@tobias langner,我的意思是代码没有任何可执行语句。 :) – Donotalo