有了#ifdef 为什么还需要#if defined ?
#include <stdio.h> #define A #define B void test(int a,int b) { } int main(void) { #if 0 #ifdef A&&B test(printf("a\n"),printf("b\n")); #endif #endif #if defined(A)&&defined(B) test(printf("a\n"),printf("b\n")); #endif return 0; }
#if 0 注释掉之后:
可见,#ifdef虽然我们最常见也用得最多,可是#if defined(XXX)却可以有 &&,||,!,逻辑与,逻辑或,逻辑非等操作,而#ifdef却不支持这样的特性。