gpt4 book ai didi

你能根据参数选择#define吗?

转载 作者:太空宇宙 更新时间:2023-11-04 05:34:29 27 4
gpt4 key购买 nike

为了简化常见的位图查找,我决定为其编写一个宏。该宏将接收参数数组、位置和每个条目的位数。后者始终为 1、2 或 3,在编译时确定。

每个条目一位和两位的宏非常简单:

#define 1BITLOOKUP(array, index) (array[index / CHAR_BIT] >> (index % CHAR_BIT)) & 1
#define 2BITLOOKUP(array, index) (array[2 * index / CHAR_BIT] >> (2 * index % CHAR_BIT)) & (0x11)

然而,三位位图会更复杂,因为它会跨越字节边界。为了效率起见,当我只使用一位和两位查找时,我不希望包含该代码。所以我想使用那种宏

#define BITMAPLOOKUP(array, index, k) kBITLOOKUP(array, index)

但是,这不起作用。有解决方法吗?

注意:根据多位评论者的要求,这已更新为非最小工作示例。

最佳答案

您可以使用 ## 构造将宏参数粘贴到不带分隔符的其他单词中。所以在这里这将起作用:

#define FUNCTION(k) FUNCTION##k

Try it online!

关于你能根据参数选择#define吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44272447/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com