博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux C 中连接操作符##
阅读量:5278 次
发布时间:2019-06-14

本文共 1170 字,大约阅读时间需要 3 分钟。

#include 
#define test(x) test ## x#define DPRINT( fmt, args...) \{ \ printf("File : %s Funtion : %s Line : %d \t", __FILE__, __FUNCTION__, __LINE__ );\ printf( fmt, ##args );\}void test1(int a){ DPRINT("Integer : %d \n", a);}void test2(char *s){ DPRINT("String : %s \n", s);}int main(void){ test(1)(100); test(2)("hello"); return 0;}

打印信息:

***************************************************

 File : test.c Funtion : test1 Line : 11         Integer : 100

 File : test.c Funtion : test2 Line : 16         String : hello

***************************************************

 

#define DPRINT( fmt, args...) \

{ \
printf("File : %s Funtion : %s Line : %d  \t", __FILE__, __FUNCTION__, __LINE__ );\
printf( fmt, ##args );\
}

这样定义宏有个问题, 标准printf()函数有返回值, 只是我们很少用

另外一种定义:

#define DPRINT( fmt, args...)     \

  printf("File : %s Funtion : %s Line : %d  \t"fmt, __FILE__, __FUNCTION__, __LINE__ ,##args )

fmt不能为指针

*****************************************

const  char *s= "string";

printf(s);

*****************************************

是合法的,可以打印出string

但DPRINT(s)就不合法

posted on
2012-02-02 10:19  阅读(
...) 评论(
...) 收藏

转载于:https://www.cnblogs.com/Neddy/archive/2012/02/02/2335399.html

你可能感兴趣的文章
Ambari之Get请求的处理流程
查看>>
防火墙1433端口打开即可远程数据库
查看>>
AJAX请求 $.getJson方法的使用
查看>>
SPOJ31428 FIBONOMIAL(斐波那契数列)
查看>>
java各种集合的线程安全
查看>>
Vagrant 手册之网络 - 私有网络 private network
查看>>
又一个新的css流程图示例
查看>>
结构体优先队列排序
查看>>
分词技术简介
查看>>
poj 3258 River Hopscotch(二分+贪心)
查看>>
[POJ 2559]Largest Rectangle in a Histogram 题解(单调栈)
查看>>
VMware
查看>>
深入了解以太坊虚拟机第5部分——一个新合约被创建后会发生什么
查看>>
io多路复用
查看>>
Cache缓存
查看>>
objective-c基础
查看>>
NET中各种加密解密方法
查看>>
HTTP协议详解-基础知识
查看>>
activity-alias详解及应用
查看>>
[51单片机] SPI nRF24L01 无线简单程序 1
查看>>