在wget程序中,函数定义经常使用 PARAMS 参数。

JCJC错别字检测-田春峰
博客专家认证
2005-08-09 01:01:54
在wget程序中,函数定义经常使用 PARAMS 参数。
比如:

代码:

#ifndef INIT_H
#define INIT_H

void initialize PARAMS ((void));
int parse_line PARAMS ((const char *, char **, char **));
int setval PARAMS ((const char *, const char *));
char *home_dir PARAMS ((void));
void cleanup PARAMS ((void));

#endif /* INIT_H */



它的定义如下:

代码:


#ifndef PARAMS
# if PROTOTYPES
# define PARAMS(args) args
# else
# define PARAMS(args) ()
# endif
#endif



我对这个定义很不理解,大家解释一下吧。[/code]
...全文
138 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
newbiestar 2005-08-09
  • 打赏
  • 举报
回复
跟多态没有关系,而且那个括号里面套括号是必需的,因为Macro也是有语法检查的,这样可以让cpp知道里面是作为一个语法单元出现。
prgmBaggio 2005-08-09
  • 打赏
  • 举报
回复
我觉得这个是仿C++的多态功能,可变参数
jixingzhong 2005-08-09
  • 打赏
  • 举报
回复
问题已经解决 ...
其实 从这里也可以大概看出来一些 :
# define PARAMS(args) args
# else
# define PARAMS(args) () ...
newbiestar 2005-08-09
  • 打赏
  • 举报
回复
这个是和原型声明有关的,如果你的编译环境要求原型声明,那么就把这个PARAMS(args)变成args,即

void func PARAM((int));
就成了
void func(int);

如果不支持的话,就变成
void func();
这样就没有了原型检查

69,370

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧