单片机调试

#define __debug
#ifdef __debug
#define debug(format,...)    printf("File:  "__FILE__"
Line:  %05d
message: "format"
", __LINE__, ##__VA_ARGS__)
#else
    #define debug(format,...)
#endif

 输出结果例如:

说明:

1、编译器支持不定参数的宏定义,' ## '的意思是,如果可变参数被忽略或为空,将使预处理器( preprocessor )去除掉它前面的那个逗号

2、编译器内置宏:

__LINE__:在源代码中插入当前源代码行号;

__FILE__:在源文件中插入当前源文件名;

__DATE__:在源文件中插入当前的编译日期

编译器在进行源码编译的时候,会自动将这些宏替换为相应内容。

如下是IAR 提供的预置宏:

原文地址:https://www.cnblogs.com/god-of-death/p/6892085.html