typedef结构的C冲突类型

时间:2015-05-23 20:30:31

标签: c arrays function struct

我的C程序有问题。我是新的C编程。我编写了一些内容,这里是我的错误和警告。

[Warning] conflicting types for 'setFirstValuesForSample' [enabled by default]

[Error] previous implicit declaration of 'setFirstValuesForSample' was here       

调用我的函数时我错过了什么?

#include <stdio.h>
    #include <stdlib.h>
    #define MAX_TERIM_SAY 101
    #define KARSILASTIR(x,y) (((x)<(y))?-1:((x)==(y))?0:1)
    typedef struct{
        int sat;//satır bilgisi
        int kol;//sütun bilgisi
        int deger;
    } terim;

    int main(int argc, char *argv[]) {
        terim a[MAX_TERIM_SAY],b[MAX_TERIM_SAY],c[MAX_TERIM_SAY];
        setFirstValuesForSample(a[MAX_TERIM_SAY],b[MAX_TERIM_SAY]);
        return 0;
    }
    void setFirstValuesForSample(terim a[],terim b[])
    {
        a[0].sat = 5;
        a[0].kol = 5;
        a[0].deger = 4;
    }

1 个答案:

答案 0 :(得分:1)

setFirstValuesForSample在使用之前未声明。因此它有一个隐含的声明

int setFirstValuesForSample();

这与定义不符,

void setFirstValuesForSample(terim a[],terim b[]) { ... }

main

中使用之前,您需要提供正确的声明
void setFirstValuesForSample(terim a[], terim b[]);

int main(int argc, char *argv[]) {

/* as before */

接下来,当您在main中实际调用它时,

setFirstValuesForSample(a[MAX_TERIM_SAY],b[MAX_TERIM_SAY]);

你传递了两个terim类型的参数。这也与定义不符。您需要将呼叫更改为

setFirstValuesForSample(a, b);