我使用C代码为某些目的写了一些其他人。在编译程序时:
警告:函数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,所以不太明白。除了这个帮助,如果我能得到一些材料来完成这个特定的事情,那将是一个很大的帮助。
您需要对struct attribute
进行前向声明。
struct attribute;
int shine(struct attribute[], int*, float*, int);
顺便说一句。未命名的函数参数不是标准的C。尽管许多编译器接受它,因为它在c++中是允许的,并且是微不足道的实现。
此功能将在即将发布的C23标准中添加到C中。