C 宏的结果是什么?
有人能告诉我以下宏的结果是什么吗。id为32位C 宏的结果是什么?,c,C,有人能告诉我以下宏的结果是什么吗。id为32位 #define ARBITR(id) ((unsigned long)(id) >> 21 & 0x000000ff | \ (unsigned long)(id) >> 5 & 0x0000ff00 | \ (unsigned long)(id) << 11 & 0x00ff0000 | \
#define ARBITR(id) ((unsigned long)(id) >> 21 & 0x000000ff | \
(unsigned long)(id) >> 5 & 0x0000ff00 | \
(unsigned long)(id) << 11 & 0x00ff0000 | \
(unsigned long)(id) << 27)
#定义仲裁(id)((无符号长)(id)>>21&0x000000ff|\
(无符号长)(id)>>5&0x0000ff00|\
(unsigned long)(id)它将id
的位洗牌如下:
- 位27-31包含原始位0-4
- 位16-23包含原始位5-12
- 位8-15包含原始位13-20
- 位0-7包含原始位21-28
要知道它的用途,您必须查看代码的更大用途。它将id
的位洗牌如下:
- 位27-31包含原始位0-4
- 位16-23包含原始位5-12
- 位8-15包含原始位13-20
- 位0-7包含原始位21-28
要了解这一点,您必须了解代码的更大用途。gcc-E将为you@Mike:我怀疑提问者也想知道宏扩展所产生的表达式的实际用途(以及它可能具有的意义或目的).当然,我只是提供了一个提示。这就是为什么我没有把它放到完整的回答中GCC-E将为you@Mike:我怀疑提问者也想知道宏扩展所产生的表达式的实际用途(以及它可能具有的意义或目的).当然,我只是提供了一个提示。这就是为什么我没有给出完整答案的原因。我猜这是一个哈希宏。我猜这是一个哈希宏。