【发布时间】:2011-03-11 11:48:49
【问题描述】:
我在 Linux 和 gcc 4.2.3 上。
对于下面的代码部分,lp_parm_talloc_string 函数被隐式调用,然后被定义:
char *lp_parm_string(const char *servicename, const char *type, const char *option)
{
return lp_parm_talloc_string(lp_servicenumber(servicename), type, option, NULL);
}
/* Return parametric option from a given service. Type is a part of option before ':' */
/* Parametric option has following syntax: 'Type: option = value' */
/* the returned value is talloced in lp_talloc */
char *lp_parm_talloc_string(int snum, const char *type, const char *option, const char *def)
{
param_opt_struct *data = get_parametrics(snum, type, option);
if (data == NULL||data->value==NULL) {
if (def) {
return lp_string(def);
} else {
return NULL;
}
}
return lp_string(data->value);
}
对于这部分,出现以下错误:
param/loadparm.c:2236: error: conflicting types for 'lp_parm_talloc_string'
param/loadparm.c:2229: error: previous implicit declaration of 'lp_parm_talloc_string' was here
如何告诉编译器允许这种情况?
【问题讨论】:
-
你绝对需要一个隐式声明吗?在文件开头或标题中明确定义您的函数。
-
最简单的解决方案:把
lp_parm_talloc_stringbeforelp_parm_string.
标签: c function declaration implicit