社区
C语言
帖子详情
C语言的宏函数及其输出到底是实现的?
辧聪
2011-08-20 04:11:26
简单的宏替换我还是懂的但是像下面这例子
#define D(fmt,args...) printf("%s - %s - %d:"fmt"\n",__FILE__,__FUNCTION__,_ _LINE__,##args)
怎么输入 怎么输出。在具体函数中怎么11对应起来的。。
刚注册,没分。。
...全文
286
15
打赏
收藏
C语言的宏函数及其输出到底是实现的?
简单的宏替换我还是懂的但是像下面这例子 #define D(fmt,args...) printf("%s - %s - %d:"fmt"\n",__FILE__,__FUNCTION__,_ _LINE__,##args) 怎么输入 怎么输出。在具体函数中怎么11对应起来的。。 刚注册,没分。。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jackylongchen
2011-08-24
打赏
举报
回复
很受用啊
谢谢大家!
tsh185
2011-08-21
打赏
举报
回复
1 #include <stdio.h>
2 #include <stdlib.h>
3
4 #define D(fmt,args...) \
5 printf("%s - %s - %d: "fmt"\n",__FILE__,__FUNCTION__,__LINE__,##args)
6
7 int main(int argc , char *argv[])
8 {
9 int a = 100 ;
10 char b = 'b' ;
11 D("a = %d b =%c",a,b);
12 return 0 ;
13 }
输出:
a.c - main - 11: a = 100 b =b
modicum_lf
2011-08-21
打赏
举报
回复
[Quote=引用 1 楼 hua_yang 的回复:]
%s对应__FILE__:对应文件名
%s对应__FUNCTION__:对应函数名
%d对应__LINE__:对应行号
fmt对应##args:表示链接,可以接受更多参数输入
总体来讲:
D(fmt,args...)这个宏可以接受变参输入,然后在输出前,加上文件,函数名和行号
例如:
D("%d %s", 10, "hello")
就会输出:
a.cpp - func - 1……
[/Quote]
++
mymtom
2011-08-21
打赏
举报
回复
可变参数宏
VCACC
2011-08-20
打赏
举报
回复
顺便学习了
[Quote=引用 1 楼 hua_yang 的回复:]
%s对应__FILE__:对应文件名
%s对应__FUNCTION__:对应函数名
%d对应__LINE__:对应行号
fmt对应##args:表示链接,可以接受更多参数输入
总体来讲:
D(fmt,args...)这个宏可以接受变参输入,然后在输出前,加上文件,函数名和行号
例如:
D("%d %s", 10, "hello")
就会输出:
a.cpp - func - ……
[/Quote]
AnYidan
2011-08-20
打赏
举报
回复
这个还是变参的
CJacky++
2011-08-20
打赏
举报
回复
编译不过,留名。。。。
jernymy
2011-08-20
打赏
举报
回复
[Quote=引用 1 楼 hua_yang 的回复:]
%s对应__FILE__:对应文件名
%s对应__FUNCTION__:对应函数名
%d对应__LINE__:对应行号
fmt对应##args:表示链接,可以接受更多参数输入
总体来讲:
D(fmt,args...)这个宏可以接受变参输入,然后在输出前,加上文件,函数名和行号
例如:
D("%d %s", 10, "hello")
就会输出:
a.cpp - func - 1……
[/Quote]
正解
匚匚
2011-08-20
打赏
举报
回复
fmt不用这样吗: #fmt
5t4rk
2011-08-20
打赏
举报
回复
就是格式对应
参数进行替换
还是原函数的调用
暮雨晨舟
2011-08-20
打赏
举报
回复
[Quote=引用 1 楼 hua_yang 的回复:]
%s对应__FILE__:对应文件名
%s对应__FUNCTION__:对应函数名
%d对应__LINE__:对应行号
fmt对应##args:表示链接,可以接受更多参数输入
总体来讲:
D(fmt,args...)这个宏可以接受变参输入,然后在输出前,加上文件,函数名和行号
例如:
D("%d %s", 10, "hello")
就会输出:
a.cpp - func - 1……
[/Quote]
++
东莞某某某
2011-08-20
打赏
举报
回复
这个还是变参的,先看看简单的宏替-函数的例子
辧聪
2011-08-20
打赏
举报
回复
Thank 有那么点概念了
hua_yang
2011-08-20
打赏
举报
回复
##在宏中是连接符号
例如:
#define NUM(a,b,c) (a##b##c)
NUM(1,2,3)就等同于123
hua_yang
2011-08-20
打赏
举报
回复
%s对应__FILE__:对应文件名
%s对应__FUNCTION__:对应函数名
%d对应__LINE__:对应行号
fmt对应##args:表示链接,可以接受更多参数输入
总体来讲:
D(fmt,args...)这个宏可以接受变参输入,然后在输出前,加上文件,函数名和行号
例如:
D("%d %s", 10, "hello")
就会输出:
a.cpp - func - 100:10 hello
其中:a.cpp文件名,func函数名,100行号
C语言
不用循环,
输出
1到1000
本文介绍了一种不使用循环结构,通过
宏
定义和递归调用的方法,在
C语言
中
输出
从1到1000的整数序列。此方法利用
宏
函数
的特性
实现
了数值的递增
输出
。
a,b,c三个数,将它们按值大小排列打印出来
博客给出一段
C语言
代码,
实现
对a、b、c三个数按值大小进行排列并打印。代码中定义了升序和降序的
宏
,通过
宏
函数
对三个数进行排序,最后分别按降序和升序
输出
结果。
c语言
基础8
博客介绍了
C语言
的基础运用,包括递归
函数
求阶乘、解决汉诺塔问题,还提及
宏
函数
的使用,换行需加“\\”,整形调用要用void型
函数
。此外,通过调用
函数
实现
从终端输入5个数并排序
输出
。
c语言
中文网va_list,深入
C语言
可变参数(va_arg,va_list,va_start,va_end,_INTSIZEOF)
本文介绍了
C语言
中可变参数的原理、
C语言
中的具体
实现
例子,如整型数据
输出
、字符串
输出
和查找最大数,同时剖析了va_arg、va_list、va_start和va_end等关键
宏
函数
的工作机制。通过实例演示了如何利用va系列
宏
处理变参问题,适用于printf、scanf等
函数
调用。
c_day06_
宏
定义
本文详细介绍了
C语言
中的预处理阶段,包括头文件的使用、
宏
定义的应用及其作用,如避免文件重复引入、定义常量及
宏
函数
等。此外,还探讨了如何通过
宏
定义简化日志
输出
,并
实现
了不同级别的日志记录。
C语言
70,038
社区成员
243,247
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章