当第一个参数是结构类型时,C 中函数声明的问题
Problem with function declaration in C when the 1st argument is a struct type
我出于某种目的正在使用其他人编写的 C 代码。编译程序时:
warning: implicit declaration of function ‘shine’
[-Wimplicit-function-declaration
我给出了下面的部分代码:
struct attribute
{
int type, symb;
float lower, upper;
} examples[MaxExs][MaxAtts];
下面是在 func1() 中调用 shine() 的代码。
int func1()
{
int e, r, nstrule;
float lwstdist;
...
shine(examples[e], &nstrule, &lwstdist, e);
...
}
下面是 shine() 的函数定义。
int shine(ex, nstrule, lwstdist, leftout)
struct attribute ex[];
int *nstrule, leftout;
float *lwstdist;
{
...
}
我只想删除该警告。所以我想在代码的开头声明它。我尝试使用:
int shine(xxx, int*, float*, int);
我不知道我做的对不对,用什么来代替xxx。我是 C 的新手。所以我无法弄清楚。除了这些帮助,如果我能得到一些 material 来完成这个特定的事情,那将是一个很大的帮助。
您需要放置 struct attribute
的前向声明。
struct attribute;
int shine(struct attribute[], int*, float*, int);
顺便说一句。未命名的函数参数不是标准的 C。
尽管许多编译器接受它,因为它在 C++ 中是允许的并且实现起来很简单。
此功能将在即将发布的 C23 标准中添加到 C。
我出于某种目的正在使用其他人编写的 C 代码。编译程序时:
warning: implicit declaration of function ‘shine’ [-Wimplicit-function-declaration
我给出了下面的部分代码:
struct attribute
{
int type, symb;
float lower, upper;
} examples[MaxExs][MaxAtts];
下面是在 func1() 中调用 shine() 的代码。
int func1()
{
int e, r, nstrule;
float lwstdist;
...
shine(examples[e], &nstrule, &lwstdist, e);
...
}
下面是 shine() 的函数定义。
int shine(ex, nstrule, lwstdist, leftout)
struct attribute ex[];
int *nstrule, leftout;
float *lwstdist;
{
...
}
我只想删除该警告。所以我想在代码的开头声明它。我尝试使用:
int shine(xxx, int*, float*, int);
我不知道我做的对不对,用什么来代替xxx。我是 C 的新手。所以我无法弄清楚。除了这些帮助,如果我能得到一些 material 来完成这个特定的事情,那将是一个很大的帮助。
您需要放置 struct attribute
的前向声明。
struct attribute;
int shine(struct attribute[], int*, float*, int);
顺便说一句。未命名的函数参数不是标准的 C。 尽管许多编译器接受它,因为它在 C++ 中是允许的并且实现起来很简单。
此功能将在即将发布的 C23 标准中添加到 C。