这看似愚蠢但我似乎忘记了更换宏的顺序。有人可以帮我弄清楚如何正确交换两个宏的值吗?请考虑以下事项:
#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.有关如何解决这个混乱的任何想法吗?
我正试图用它来试图解决另一个问题:
答案 0 :(得分:2)
无法完成。
正如@jeffamaphone在他的评论中解释的那样,宏观定义不是作业
#define A B
并不关心B
的价值。它只记得A
应该替换为B
。之后,当在源代码中看到A
时,它会被替换为B
,然后可以再次替换,而当时定义为B
。