请问一下 这些错在哪了呀

请问一下 为什么出错了啊
一大堆报错
头文件↓

#pragma once
#include<iostream>
#include<string.h>
using namespace std;
void showMenu();
void addPerson(adressbook* adb);

源文件↓
main.cpp

#pragma warning(disable:4996)
#include"head.h"
#define max 1000

struct linkman
{
    string name;
    int gender;
    int age;
    string tel;
    string address;
};

struct adressbook
{
    struct linkman arr[max];
    int lknum;
};

int main()
{
    int select = 0;
    while (true)//无限循环
    {
        //创建通讯录结构体变量
        adressbook adb;

        //初始化通讯录人员个数
        adb.lknum = 0;


        
        showMenu();


        cin >> select;
        switch (select)
        {
        case 1://添加
            addPerson(&adb);
            break;
        case 2://显示
            break;
        case 3://删除
            break;
        case 4://查找
            break;
        case 5://修改
            break;
        case 6://清空
            break;
        case 0://退出
            cout << "LOG OUT" << endl;
            system("pause");
            return 0;
            break;
        default:
            break;
        }
    }
    system("pause");
    return 0;
}

addperson.cpp

#pragma warning(disable:4996)
#include"head.h"

void addPerson(adressbook * adb)
{
    //先判断通讯录是否满了
    if (adb->lknum ==max)
    {
        cout << "通讯录已满" << endl;
        return;
    }
    else
    {
        string name;
        cout << "输入姓名" << endl;
        cin >> name;
        adb->arr[adb->lknum].name = name;
        int gender;
    }
}

showmenu.cpp

#pragma warning(disable:4996)
#include"head.h"
void showMenu()
{
    cout << "**********************" << endl;
    cout << "*****1.添加联系人*****" << endl;
    cout << "*****2.显示联系人*****" << endl;
    cout << "*****3.删除联系人*****" << endl;
    cout << "*****4.查找联系人*****" << endl;
    cout << "*****5.修改联系人*****" << endl;
    cout << "*****6.清空联系人*****" << endl;
    cout << "*****0.退出联系人*****" << endl;
    cout << "**********************" << endl;
}

错误信息是什么
没看到 struct linkman 的定义啊