0

我想将参数保存到宏名称中,然后将其用于另一个宏函数。

我正在寻找类似的东西

#define MACRO1(X) MACRO_NAME = X

#define MACRO2(Y) Y = MACRO_NAME;

1int main()
{
    int a = 2, b;

    MACRO1(a);
    ...
    MACRO2(b)

}

有可能吗?正确的方法是什么?

我上面给出的代码只是我想要的一个例子

4

2 回答 2

1

预处理器只进行文本替换,它不“运行”代码。它所做的只是根据定义的宏(和#include指令等)转换代码,然后将其交给编译器。

你上面的例子意味着编译器会看到:

int a = 2, b;

MACRO_NAME = a;
...
b = MACRO_NAME;

这不会构建,因为没有名为MACRO_NAME. 你的问题有点不清楚,你应该澄清你想要做什么,为什么。

于 2013-01-06T15:44:30.803 回答
0

我想您需要按以下方式更改代码。声明 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)
}
于 2013-01-06T17:11:09.220 回答