我想将参数保存到宏名称中,然后将其用于另一个宏函数。
我正在寻找类似的东西
#define MACRO1(X) MACRO_NAME = X
#define MACRO2(Y) Y = MACRO_NAME;
1int main()
{
int a = 2, b;
MACRO1(a);
...
MACRO2(b)
}
有可能吗?什么是正确的方法呢?
我上面给出的代码只是我想要的一个例子
答案 0 :(得分:1)
预处理器只进行文本替换,不会“运行”代码。它只是根据定义的宏(和#include
指令等)转换代码,然后将其交给编译器。
上面的例子意味着编译器会看到:
int a = 2, b;
MACRO_NAME = a;
...
b = MACRO_NAME;
这不会构建,因为没有名为MACRO_NAME
的变量。你的问题有点不清楚,你应该澄清你想做什么,以及为什么。
答案 1 :(得分:0)
我猜您需要按以下方式更改代码。将MACRO_NAME声明为int变量;所以内联替换第一个宏调用将plce代码如“MACRO_NAME = a”,它将编译没有问题。
#define MACRO1(X) MACRO_NAME = X
#define MACRO2(Y) Y = MACRO_NAME;
int main() {
int a = 2, b;
int MACRO_NAME;
MACRO1(a);
MACRO2(b)
}