我知道这可能是不好的,也可能是不可能的,但是由于这不是一个递归的宏,所以我认为应该是可能的。
#define FOO 15
#define MAKE_BAR(x) BAR_##x
#define MY_FOO_BAR MAKE_BAR(FOO)我希望MY_FOO_BAR对BAR_15进行评估。在将其传递给MAKE_BAR之前,有什么方法可以告诉预处理器对FOO进行评估吗?
发布于 2014-08-15 18:27:57
您需要另一级别的宏调用:
#define FOO 15
#define MAKE_BAR_INNER(x) BAR_##x
#define MAKE_BAR(x) MAKE_BAR_INNER(x)
#define MY_FOO_BAR MAKE_BAR(FOO)这是因为在函数宏展开过程中如何处理参数。##连接运算符阻止参数展开,因此必须通过添加另一个“层”来“强制”展开。
https://stackoverflow.com/questions/25331999
复制相似问题