社区
C语言
帖子详情
C语言的宏函数及其输出到底是实现的?
辧聪
2011-08-20 04:11:26
简单的宏替换我还是懂的但是像下面这例子
#define D(fmt,args...) printf("%s - %s - %d:"fmt"\n",__FILE__,__FUNCTION__,_ _LINE__,##args)
怎么输入 怎么输出。在具体函数中怎么11对应起来的。。
刚注册,没分。。
...全文
297
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
不用循环,
实现
1到1000的
输出
。 代码如下: #include "stdio.h" #define A(x) int main () { int n = 1; return 0; } 这里巧妙利用了
宏
函数
的方式,每个x;
输出
一个n++,那么 x;x;x;x;x;x;x;x;x;x; 代表
输出
10次。而, A(A(A(printf ("%d ",
a,b,c三个数,将它们按值大小排列打印出来
/*题目要求是:给出a,b,c三个数,将它们按值大小排列打印出来*/#include #define U(A,B,T) ((A>B)?(((T=A)||1)?(((A=B)||1)?(B=T):0):0):0) /*升序*/#define D(A,B,T) ((A /*降序*/#define FOO(A,B,C,T,F) (F##(A,B,T)||1)?(F#
c语言
基础8
调用
函数
实现
从终端输入5个数,
输出
五个数,对五个数进行排序。
宏
函数
使用时如果要换行需要在前面加“\”表示是一个整体。整形的调用不能直接
输出
要用void型调用
函数
。输入一个数,
输出
该
函数
的阶乘。用
c语言
解决汉诺问题。
c语言
中文网va_list,深入
C语言
可变参数(va_arg,va_list,va_start,va_end,_INTSIZEOF)
一、什么是可变参数在
C语言
编程中有时会遇到一些参数个数可变的
函数
,例如printf(),scanf()
函数
,其
函数
原型为:int printf(const char* format,…),int scanf(const char *format,…);它除了有一个参数format固定以外,后面跟着的参数的个数和类型是可变的(用三个点“…”做参数占位符),实际调用时可以有以下的形式:printf(“...
c_day06_
宏
定义
#include #include #include "A.h" //
c语言
的执行流程 //编译:形成目标代码(.obj) //连接:将目标代码与c
函数
库连接合并,形成最终可以执行的文件 //执行 //预编译(预处理),为编译工作做准备,完成代码文本的替换工作 //头文件告诉编译器有这样一个
函数
,连接器负责找到该
函数
的
实现
//define 指令 //1.定义
C语言
70,038
社区成员
243,245
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章