报错信息 “error:conflicting types”

vim ss.c

# include <stdio.h>

# include <malloc.h>

# include "functions.h"


int main(void)

{

        int num_stu = 0;

        struct stu * s;

        int k = 1;   // k = 1:low -> high  k = 2:hige -> low


        printf("请问哥们多少弟兄?: \n");

        printf("num = ");

        scanf("%d",&num_stu);

        s = (struct stu *)malloc( sizeof(struct stu) * num_stu );


        mk(s,num_stu);

        display(s,num_stu);


        sort_age(s,num_stu,k);

        display(s,num_stu);


        k = 2;

        sort_age(s,num_stu,k);

        display(s,num_stu);


        return 0;

}


vim functions.h

# include "structs.h"


// declear functions.

int mk(struct stu *,int);
void display(struct stu *,int);
void sort_age(struct stu * p,int len,int k);


// define functions.

void mk(struct stu * p_stu,int num)
{
        int i;

        for(i=0;i<num;i++)
        {
                printf("输入第 %d 个哥们的名字: ",i+1);
                scanf("%s",&(*(p_stu + i)).name);

                printf("输入第 %d 个哥们的年龄: ",i+1);
                scanf("%d",&(*(p_stu + i)).age);

                printf("输入第 %d 个哥们的序号: ",i+1);
                scanf("%d",&(*(p_stu + i)).id);
        }


        return;
}


void display(struct stu * p,int num)
{
        int i=0;
        for(i=0;i<num;i++)
        {
                printf("This is %d \n",i+1);
                printf("\t 1 name = %s\n",p[i].name);
                printf("\t 2 id = %d\n",p[i].id);
                printf("\t 3 age = %d\n",p[i].age);

        }
        return;
}


void sort_age(struct stu * p,int len,int k)

{

        int i = 0,j = 0;

        struct stu t;


        for(i=0;i<len-1;i++)

                for(j=0;j<len-i-1;j++)

                        if(k == 1)

                        {

                                if((i == 0) && (j == 0))

                                        printf("从小到大排序\n");

                                if(p[j].age > p[j+1].age)

                                {

                                        t = p[j];

                                        p[j] = p[j+1];

                                        p[j+1] = t;

                                }

                        }

                        else if(k == 2)

                        {

                                if((i == 0) && (j == 0))

                                        printf("从大到小排序\n");

                                if(p[j].age < p[j+1].age)

                                {

                                        t = p[j];

                                        p[j] = p[j+1];

                                        p[j+1] = t;

                                }

                        }

                        else

                                printf("The value of \"k\" is error.");

        ;


        return;

}


vim structs.h

// define structs.
struct stu
{
        char name[50];
        int age;
        int id;
};


gcc ss.c

In file included from ss.c:3:
functions.h:11: error: conflicting types for ‘mk’
functions.h:5: note: previous declaration of ‘mk’ was here


_________________________________________

* 原因是修改了函数的返回值类型,后没有修改函数声明的返回值类型。

改为,即可正常编译。

// declear functions.


int mk(struct stu *,int);


* 说明结构体数组可以整体赋值。




本文出自 “小崔的实验笔记” 博客,谢绝转载!

你可能感兴趣的:(报错,error,Types,conflicting)