当第一个参数是结构类型时,C中函数声明的问题



我使用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中。

相关内容

  • 没有找到相关文章

最新更新