我想判断如果一个宏定义为 X 时做操作 A,定义为 Y 时做操作 B。这样写是可以的
#define X 0
#define M X
#if M==X
#error("Equal!");
#else
#error("Not equal");
#endif
我知道这里有一个陷阱。这里的M
和X
中,任意一个没有(通过#define
)定义时,判断为 Equal。
但是这样写却不行(Visual Studio 2017)
#define X ((void*)0)
#define M X
#if M==X
#error("Equal!");
#else
#error("Not equal");
#endif
有没有什么办法让它可行,或者变相地实现这样的功能?