交换宏的值

时间:2012-02-22 21:11:51

标签: c++ c c-preprocessor

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

#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

1 个答案:

答案 0 :(得分:2)

无法完成。
正如@jeffamaphone在他的评论中解释的那样,宏观定义不是作业 #define A B并不关心B的价值。它只记得A应该替换为B。之后,当在源代码中看到A时,它会被替换为B,然后可以再次替换,而当时定义为B

相关问题