社区
C语言
帖子详情
vc平台上的c语言支持变长参数的宏吗?
jpzhu
2004-02-02 03:33:32
gcc里有类似的定义,比如
#define SOFT_LOG(args...) \
printf("soft_log:\t%s\t%i\n", __FILE__, __LINE__); \
printf(args); \
printf("\n")
这个args...就是变长的,请问在vc中如何实现类似的功能?
...全文
136
9
打赏
收藏
vc平台上的c语言支持变长参数的宏吗?
gcc里有类似的定义,比如 #define SOFT_LOG(args...) \ printf("soft_log:\t%s\t%i\n", __FILE__, __LINE__);\ printf(args); \ printf("\n") 这个args...就是变长的,请问在vc中如何实现类似的功能?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
021850524
2004-02-03
打赏
举报
回复
要的是变长参数的宏,不是函数.
jpzhu
2004-02-03
打赏
举报
回复
to DoItFreely:
最后使用的方法是这样的:
void varprint(const char *format,...)
{
va_list ap;
va_start(ap,format);
vprintf(format, ap);
va_end(ap);
printf("\n");
}
虽然printf加在这里比较难看,不过这么做应该能解决我的问题了。你的看法如何?
oo
2004-02-03
打赏
举报
回复
用加括号的办法,不过用起来怪怪的
#define SOFT_LOG(args) \
printf("soft_log:\t%s\t%i\n", __FILE__, __LINE__); printf args; \
printf("\n")
调用的时候 SOFT_LOG( (参数列表) );
oyd
2004-02-03
打赏
举报
回复
目前vc的预处理器好像是不支持
doer_ljy
2004-02-02
打赏
举报
回复
如大家所说
DoItFreely
2004-02-02
打赏
举报
回复
由于__FILE__和__LINE__的缘故,等价于楼主意思的代码如下:
void varprint(const char *format,...)
{
va_lisp ap;
va_start(ap,format);
vprintf(ap);//库函数
va_end(ap);
}
#define SOFT_LOG \
printf("soft_log:\t%s\t%i\n", __FILE__, __LINE__); varprintf
如果不使用缓冲区,末尾的"\n"加不上去
使用缓冲区的话,varprint()只需要把vprintf()换成vsprintf()打印输出到缓冲区,再把"\n"附加到缓冲区末尾,最后printf()缓冲区的内容即可。
缓冲区多大才合适?根据自己的需要确定吧。如果以上代码会被频繁调用,建议不要定义很大的auto类型缓冲区数组。
yjh1982
2004-02-02
打赏
举报
回复
不支持!
DoItFreely
2004-02-02
打赏
举报
回复
void varprint(const char *format,...)
{
va_lisp ap;
printf("soft_log:\t%s\t%i\n", __FILE__, __LINE__);
va_start(ap,format);
vprintf(ap);//库函数
va_end(ap);
}
flyelf
2004-02-02
打赏
举报
回复
gz
C语言
变长
参数
函数原理
变长
参数
函数概念 在很多日志 Log 函数的封装中,可以看到可
变长
参数
函数。 C99中,出现了函数可
变长
参数
特性,例如:printf 就可以接受任意长度的
参数
列表。看一下 printf 函数的定义: int printf (const char* ...
C语言
变长
参数
详解
1.1 什么是可
变长
参数
可
变长
参数
:顾名思义,就是函数的
参数
长度(数量)是可变的。比如 C 语言的 printf 系列的(格式化输入输出等)函数,都是
参数
可变的。下面是 printf 函数的声明: int printf ( const char...
c语言
宏
变长
参数
,C/C++
变长
参数
宏
(Variadic Macros)
A macro can be declared to accept a variable number of arguments much as a function can. The syntax for defining the macro is similar to that of a function. Here is an example:#define eprintf(...) fpr...
C语言
中可变
参数
的
宏
定义
printf()和fprintf()这些输出函数的
参数
是可变的,在调试程序时,你可能希望定义自己的
参数
可变的输出函数,那么可变
参数
宏
会是一个选择。 C99中规定
宏
可以像函数一样带有可变
参数
,比如 #define LOG(format, ...)...
c语言
宏
变长
参数
,科学网—C/C++中处理
变长
参数
函数(Variadic Function)的几个
宏
- 彭彬的博文...
近日在模式中进行非线性方程组求解时遇到
变长
参数
函数的问题,以前从来没有自己写过
变长
参数
的函数,于是补了一下课,将近日对该小问题的学习和理解整理如下。一、
变长
参数
函数(variadic function)[1,2]其实我们在刚...
C语言
69,370
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章