gpt4 book ai didi

c - 是否可以在字符串化宏之前处理数学计算?

转载 作者:行者123 更新时间:2023-11-30 16:29:27 25 4
gpt4 key购买 nike

我在网上浏览了很多有关宏字符串化的示例,但找不到类似的东西。

我目前的定义如下。

#define PIN_A (0+1)
#define PIN_B (0+2)
#define PIN_C (0+3)
#define str(x) #x
#define xstr(x) str(x)
#define PIN_DEF(x) { #x, xstr(PIN_ ## x) }

输出

PIN_DEF(A)

将成为

{ "A", "(0+1)" }

但是,我真正需要的是

{ "A", "1" }

这可能吗? :/

最佳答案

Yes ,这是可能的。

#include <boost/preprocessor/arithmetic.hpp>
#define PIN_A BOOST_PP_ADD(0,1)
#define PIN_B BOOST_PP_ADD(0,2)
#define PIN_C BOOST_PP_ADD(0,3)
#define str(x) #x
#define xstr(x) str(x)
#define PIN_DEF(x) { #x, xstr(PIN_##x) }

PIN_DEF(A)

请记住,Boost 预处理器的算术宏在 256 处饱和。

注意事项

预处理器也可以计算表达式,但这样做的唯一方法是调用预处理器条件指令(例如#if <表达式>/#elif <表达式>)。您可以由此创建一个有用的表达式计算器,但有使用限制,但它似乎不适合这个用例。 数学需要应用于宏的使用(并且本质上是从头开始实现),因此操作必须通过宏调用来实现。

关于c - 是否可以在字符串化宏之前处理数学计算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51832147/

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