定义宏控制输出printf开关(适用于嵌入式)

宏控制输出开关

此处DEBUG_ON 后的1为开启打印 改为0则关闭输出

/* 输出打印开关  */
#define DEBUG_ON 1
#if DEBUG_ON
#define DEBUG(...) printf(__VA_ARGS__)
#else
#define DEBUG(...)
#endif

VA_ARGS,fmt是什么

还有一种写法是

#define DEBUG(fmt, ...) printf(fmt, ##__VA_ARGS__)

__VA_ARGS__ 是 C/C++ 中的一个特殊宏,用于表示可变参数列表。在宏定义中,如果需要传递可变数量的参数,可以使用 __VA_ARGS__ 来表示这些参数。
在这个宏定义中,fmt 表示输出格式字符串,__VA_ARGS__ 表示可变参数列表。在使用这个宏时,可以像使用 printf 函数一样,传递需要输出的参数,例如:

int a = 10;
DEBUG("a = %d\n", a);

在这个例子中,"a = %d\n" 是输出格式字符串,a 是需要输出的参数。在宏定义中,__VA_ARGS__ 将会被替换为传递的参数列表,例如:

printf("a = %d\n", a);

需要注意的是,在使用 __VA_ARGS__ 时,需要在宏定义中使用 ## 连接符,以避免出现参数列表为空的情况。例如,在上面的宏定义中,##__VA_ARGS__ 表示如果参数列表为空,则忽略前面的逗号。这样可以避免出现语法错误。

宏定义优先级

宏的优先级是按定义的顺序来排的,最后定义的优先级最高

你可能感兴趣的:(C语言,stm32,stm32,c++,c语言)