C语言 常用的宏定义

__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");
}
原文地址:https://www.cnblogs.com/zhanggaofeng/p/6298312.html