基本上我在现有代码中有四个案例:
#define ABC
或-DABC
#define ABC 1
或-DABC=1
#define ABC 0
或-DABC=0
我希望第1和第4,第2和第3个案例相同:
#if defined(ABC) && IS_EMPTY(ABC)
# undef ABC
# define ABC 1
#endif
#if !defined(ABC) || !(ABC)
# undef ABC
# define ABC 0
#endif
我如何IS_EMPTY(X)
?
答案 0 :(得分:2)
如果您知道只有0
,1
或空的值可以出现,您可以使用类似
#define some_impossible_macro 1
#define some_impossible_macro0 0
#define some_impossible_macro1 0
#define IS_EMPTY(X) some_impossible_macro ## X
否则,对于一般情况,这有点复杂但可行。您可以使用P99中的P99_IS_EMPTY
。