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