方式一
#if
#endif
#define LEDTEST 1//1打开:0关闭
#if LEDTEST
led_on();
#endif
方式二
#ifdef
#endif
#ifdef LEDTEST
led_on();
#endif
要使用:
#define LEDTEST即可
注意不是#define LEDTEST 1,
实际上,如果真要这样写:
#define LEDTEST 1
#define LEDTEST 0
也都可以生效该代码段。
方式一#if和方式二#ifdef别混搅
方式一,即#if可以用在复杂的预编译条件,而#ifdef就不能。如果要判断单个宏是否被定义时,#if和#ifdef效果一样,看心情使用。
举例方式一进一步应用:
满足条件则生效代码段
#define LEDTEST
#define POWER_V 11
#if defined(LEDTEST) && POWER_V>10
LED_13 =~LED_13;
delay_ms(500);
#endif
错把#ifdef当成#if来组成复杂预编译条件使用时:
方式三
#ifndef
#define
#else
#endif
#define LEDTEST
#ifndef LEDTEST
#define LEDTEST
//如果LEDTEST没有被定义,则定义,并执行本段代码
LED_13 =~LED_13;
delay_ms(500);
#else
//如果LEDTEST被宏定义,则本段代码被执行
LED_13 =~LED_13;
delay_ms(500);
#endif