我需要暂时覆盖一个宏然后恢复它。像:
#define FOO X
#save FOO
#define FOO Y
...
#restore FOO
在标准 C 预处理器中是否有可能?在海湾合作委员会?
添加。关于现实世界的例子。我使用全局宏来处理错误异常。它的作用类似于assert
,但用于持久使用,不仅用于调试版本;因此,例如,我通常在宏内部调用函数(有副作用)。它被定义一次,但定义不是持久的;因此我不知道它是先验的。对于某些代码,我需要它自己的修改版本的宏,但我想保存一般的代码样式。当一部分代码使用一个宏,另一部分使用另一个宏时,这看起来很难看——两个宏的目的相同,但实现方式略有不同。
所以,我最好暂时保存原始宏,对部分代码使用不同的版本,然后恢复原始宏。