社区
C语言
帖子详情
C语言的宏函数及其输出到底是实现的?
辧聪
2011-08-20 04:11:26
简单的宏替换我还是懂的但是像下面这例子
#define D(fmt,args...) printf("%s - %s - %d:"fmt"\n",__FILE__,__FUNCTION__,_ _LINE__,##args)
怎么输入 怎么输出。在具体函数中怎么11对应起来的。。
刚注册,没分。。
...全文
222
15
打赏
收藏
C语言的宏函数及其输出到底是实现的?
简单的宏替换我还是懂的但是像下面这例子 #define D(fmt,args...) printf("%s - %s - %d:"fmt"\n",__FILE__,__FUNCTION__,_ _LINE__,##args) 怎么输入 怎么输出。在具体函数中怎么11对应起来的。。 刚注册,没分。。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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行号
你必须知道的495个
C语言
问题
6.3 那么,在
C语言
中“指针和数组等价”
到底
是什么意思? 6.4 既然它们这么不同,那为什么作为
函数
形参的数组和指针声明可以互换呢? 数组不能被赋值 6.5 为什么不能这样向数组赋值?externchar*getpass();...
完整版
C语言
程序设计TXT电子书
4.3 数据输入
输出
的概念及在
C语言
中的
实现
54 4.4 字符数据的输入
输出
54 4.4.1 putchar
函数
(字符
输出
函数
) 54 4.4.2 getchar
函数
(键盘输入
函数
) 55 4.5 格式输入与
输出
55 4.5.1 printf
函数
(格式...
经典
C语言
源代码大全
7. **预处理器**:预处理器负责处理源代码中的
宏
定义、条件编译等,理解
宏
展开的过程及其在优化和平台适配中的应用。 8. **内存管理**:掌握动态内存分配(malloc、calloc、realloc、free)及内存泄漏的预防,理解...
必须知道的495个
C语言
问题
C语言
是一种基础且强大的编程语言,它被广泛用于系统编程、软件开发、设备驱动、游戏开发等多个领域。了解并掌握
C语言
中的常见问题对于提升编程技能至关重要。以下是一些关于
C语言
的重要知识点,它们涵盖了从基本...
C标准库源代码
- `printf` 和 `scanf`:这两个
函数
分别用于格式化
输出
和输入,是
C语言
中最常用的I/O
函数
。`printf`可以按照指定的格式打印变量或表达式的值,而`scanf`则可以从标准输入读取数据。 - `fopen`, `fclose`, `fread`,...
C语言
70,022
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章