#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 提供的预置宏: