将变量保存到宏名称中并在许多宏函数中使用它

时间:2013-01-06 15:37:52

标签: c macros

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

我正在寻找类似的东西

#define MACRO1(X) MACRO_NAME = X

#define MACRO2(Y) Y = MACRO_NAME;

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

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

}

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

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

2 个答案:

答案 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)
}