greenery 发表于 2020-9-26 19:10:12

为什么我一加函数声明就报错?

报错时是“conflicting types for getInput”
不加申明就正常了。。。why?{:10_284:}
#include <stdio.h>
#include <stdlib.h>

//void getInput(struct Book*book);
void getInput(struct Book*book);//一加函数声明就报错
struct Date
{
        int year;
        int month;
        int day;
};
struct Book
{
        char name;
        char title;
        float price;
        struct Date date;
};

void getInput(struct Book*book)
{
        printf("请输入书名:");
        scanf("%s",book->title);
        printf("请输入姓名:");
        scanf("%s",book->name);
        printf("请输入售价:");
        scanf("%f",&book->price);
        printf("请输入日期:");
        scanf("%d%d%d",&book->date.year,&book->date.month,&book->date.day);
       
        //
}

void printBook(struct Book book)//将结构体变量 值传递 给指针会使开销变大。
{
        printf("name:%s\n",book.name);
        printf("title:%s\n",book.title);
        printf("price:%f\n",book.price);
        printf("date:%d%d%d\n",book.date.year,book.date.month,book.date.day);
}

int main(void) {
        struct Book b1,b2;
        printf("请输入第一本书的信息》》》\n");
        getInput(&b1);
        putchar('\n');
        printf("请输入第二本书的信息》》》\n");
        getInput(&b2);
        putchar('\n');
        printf("你的录入:\n");
        printBook(b1);
        printBook(b2);
        return 0;
}

ba21 发表于 2020-9-26 19:16:27

代码顺序问题。自己调整下。
既然都是在main前面,就没必要在声明一下。

lhgzbxhz 发表于 2020-9-26 20:05:18

你还没声明Book结构体呢,编译器不知道Book是什么

baige 发表于 2020-9-26 20:05:48

声明写在结构体后面

乐乐学编程 发表于 2020-9-26 20:09:30

我用 VC++6.0 编译,没有出现告警,运行也是正常的

greenery 发表于 2020-9-27 17:34:16

lhgzbxhz 发表于 2020-9-26 20:05
你还没声明Book结构体呢,编译器不知道Book是什么

{:10_279:}妙啊
页: [1]
查看完整版本: 为什么我一加函数声明就报错?