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