C ';结构x';在参数列表中声明

C ';结构x';在参数列表中声明,c,function,struct,C,Function,Struct,有人能帮我吗 语言:C int func(struct Dog A, struct Dog B); //func.h header test=func(A,B); //main.c main int test(struct Dog *A,struct Dog *B){ int test=0; return test; }//func.c functions //Structs: struct date { int day; int month; int year;

有人能帮我吗

语言:C

int func(struct Dog A, struct Dog B); //func.h header

test=func(A,B); //main.c main

int test(struct Dog *A,struct Dog *B){

    int test=0;



    return test;
}//func.c functions

//Structs:

struct date {
int day;
int month;
int year;
};

struct Dog {
char name[50];
struct date birthdate;
int age;
}A,B;
警告:其范围仅限于此定义或声明,这可能不是您想要的

警告:在参数列表中声明了“struct Dog”


我们还没有学到任何关于指针的知识,所以请提醒一下,但我认为你需要这些知识。

我通常不会回答这个问题,因为这个问题很琐碎(而且是重复的),但似乎提问者和/或问题的评论者在英语方面有问题,我认为一个带有示例代码的非常明确的语句会有所帮助

您需要移动
struct Dog
的完整声明

struct Dog {
    char name[50];
    struct date birthdate;
    int age;
};
指向您调用的
func.h header
,您需要将其放在该文件读取行的前面

int func(struct Dog A, struct Dog B);
这将纠正您询问的错误。在我看来,您的代码中还存在其他一些错误,但是如果没有看到实际的完整程序,而不是一堆片段,我就无法帮助您解决这些错误


我们对看到实际完整的程序大惊小怪,因为太多时候,当有人发布一堆片段时,问题在于他们没有发布的代码,或者取决于片段在实际程序中出现的顺序。但你的直觉是,你已经发布了太多的代码是好的!我们确实希望你从完整的程序中删减你发布的内容,但我们希望你保持它是一个完整的程序,一个我们可以自己编译和实验的程序。理想情况下,我们想要的是尽可能短的完整程序,以显示您需要帮助的问题。

为什么不在标题中包含结构定义?至少,在使用结构定义之前,请先放置结构定义。提供一个!如果这正是您编译的代码:由于各种原因,这不是有效的C,您应该参考C书籍了解基本知识。在函数原型在其参数中引用它之前,确保您有
struct Dog
的定义。两个人已经告诉您如何修复您提到的错误。。。但是,您粘贴的看似随机的代码位并没有如图所示的那样有多大意义(不合顺序和上下文)。另外,看起来您同时拥有名为
test
的函数和变量。。。这可能不是个好主意。