__FILE__ :宏在预编译时会替换成当前的源文件名
__LINE__:宏在预编译时会替换成当前的行号
__FUNCTION__:宏在预编译时会替换成当前的函数名称
//宏__VA_ARGS__的用法实例
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*
__VA_ARGS__:总体来说就是将带参数的宏中的参数内容原样抄写在右边 __VA_ARGS__ 所在的位置。
它是一个可变参数的宏,是新的C99规范中新增的,目前似乎只有gcc支持(VC从VC2005开始支持)。
*/
#define Text1(...) printf(__VA_ARGS__)
#define Text2(...) printf("Line:%d--;",__VA_ARGS__, __LINE__);
#define Text3(fm, ...) printf(fm,__VA_ARGS__)
void main()
{
//示例一
//Text1("123","456");
//这样只能打印第一个参数"123"
//示例二
//Text2(112,22);
//打印:Line:112--;__LINE__的值不打印
//示例三
Text3("1=%s,2=%s","我是值1","我是值2");
//打印:1=我是值1,2=我是值2
system("pause");
}