gpt4 book ai didi

c - 编写 C 宏

转载 作者:行者123 更新时间:2023-12-01 08:14:19 26 4
gpt4 key购买 nike

我必须编写一个宏来获取一些变量作为参数,并且对于每两个具有“1”值的连续位将其替换为 0 位。

例如:10110100 将变为 10000100。
并且,11110000->00000000
11100000->100000000

我在编写该宏时遇到了麻烦。我试图编写一个宏来获取 wach 位并在下一位相同时替换它(并且它们都是 1),但它仅适用于 8 位并且非常不友好......

附言我需要一个宏,因为我正在学习 C,这是我发现的一个练习,我自己无法解决。我知道我可以使用函数来轻松实现...但我想知道如何使用宏来实现。

谢谢!

最佳答案

#define foo(x,i) (((x) & (3<<i)) == (3<<i)) ? ((x) - (3 << i)) : (x)
#define clear_11(x) foo(foo(foo(foo(foo(foo(foo(foo(foo(x,8),7),6),5),4),3),2),1),0)

这将完成这项工作。然而,扩展相当大,编译可能需要一段时间。所以不要在工作中尝试这个;)

关于c - 编写 C 宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2644361/

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