C一个函数的明确声明

我在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 

如何告诉编译器允许这样的情况?

您需要在使用之前声明您的函数:

 char *lp_parm_talloc_string(int snum, const char *type, const char *option, const char *def); char *lp_parm_string(const char *servicename, const char *type, const char *option) { return lp_parm_talloc_string(lp_servicenumber(servicename), type, option, NULL); } // ...and the rest of your code 

或者只是更改两个函数在源中出现的顺序。