0

私はLinuxとgcc4.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

このような場合を許可するようにコンパイラに指示するにはどうすればよいですか?

4

1 に答える 1

3

関数を使用する前に、関数を宣言する必要があります。

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

または、2つの関数がソースに表示される順序を変更するだけです。

于 2011-03-11T11:51:31.247 に答える