这似乎很愚蠢,但我似乎忘记了替换宏的顺序。有人可以帮我弄清楚如何正确交换两个宏的值吗?考虑以下:

#include <stdlib.h>
#include <stdio.h>

#define var1 5
#define var2 10

#define _VAL(a) a
#define VAL(a) _VAL(a)


int main(){

    printf("var1 = %d, var2 = %d\n", var1, var2);

#define TEMP VAL(var1)
#undef var1
#define var1 VAL(var2)
#undef var2
#define var2 VAL(TEMP)

    printf("var1 = %d, var2 = %d\n", var1, var2);
}


我只想将var1替换为10,将var2替换为5。关于如何解决此问题的任何想法?

我正在尝试使用它来解决其他问题:

C Macro to protect definitions

最佳答案

不能做
正如@jeffamaphone在他的评论中解释的那样,宏定义不是赋值。
#define A B不在乎B的值。它只是记住A应该替换为B。稍后,当在源中看到A时,它将替换为B,然后可以再次用当时定义的B替换。

关于c++ - 交换宏的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9403083/

10-13 08:04