将结构体传入函数是发生的错误

代码如下:

#include<stdio.h>
#include<windows.h>
void printS(struct Nerbor *nerbor);
void printS(struct Nerbor *nerbor)
{
    printf("%ld %s %d",nerbor->number,nerbor->human.name,nerbor->human.year);
    printf("%ld %s %d",(nerbor+1)->number,(nerbor+1)->human.name,(nerbor+1)->human.year);
}
struct Nerbor 
{
    long number;
    struct Human human;
};

struct Human
{
    char name[10];
    int year;
}human;



int main(void)
{
    struct Nerbor *him;
    struct Nerbor nerbor[2] = {{302039823,{"John",1985}},{302039776,{"Alice",2000}}};
    him = &nerbor[0];
    printS(him);
    system("pause");
    return 0;
}

报错如下:
invalid use of incomplete type 'struct Nerbor';
应输入标识符;
field 'human' has incomplete type 'Human';

#include<stdio.h>
#include<windows.h>
struct Human
{
    char name[10];
    int year;
}human;

struct Nerbor 
{
    long number;
    struct Human human;
};
void printS(struct Nerbor *nerbor);
void printS(struct Nerbor *nerbor)
{
    printf("%ld %s %d",nerbor->number,nerbor->human.name,nerbor->human.year);
    printf("%ld %s %d",(nerbor+1)->number,(nerbor+1)->human.name,(nerbor+1)->human.year);
}
int main(void)
{
    struct Nerbor *him;
    struct Nerbor nerbor[2] = {{302039823,{"John",1985}},{302039776,{"Alice",2000}}};
    him = &nerbor[0];
    printS(him);
    system("pause");
    return 0;
}

img