При компиляции файла возникают ошибки линковки. Ошибка LINK2001
Header.h
#pragma once
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <locale.h>
#include <Windows.h>
#define LC_ALL 0
#pragma warning(disable:4996)
#define _CRT_SECURE_NO_WARNINGS
#define Enter_a_word _asm\
/* Структура для хранения информации про одну страну */
typedef struct tagITEM
{
char Country[20], City[20];
int Population;
} ITEM;
/* Массив максимум на 200 стран */
extern ITEM Men[200];
extern int Number;
/* Функция для вывода всех элеиентов */
void Print(void);
void Add(void);
void Del(void);
void Save(void);
void Load(void);
void Sort(void);
int Menu(void);
Header.cpp
#include "Header.h"
void Print(void)
{
int i;
printf(" N Страна Столица Население\n");
for (i = 0; i < Number; i++)
printf("%2i. %-20s %-20s %3i\n", i + 1, Men[i].Country,
Men[i].City, Men[i].Population);
} /* End of 'Print' function */
/* Функция для добавления элемента */
void Add(void)
{
if (Number == 200)
{
fprintf(stderr, "Невозможно добавить еще один элемент\n");
return;
}
printf("Введите название страны > ");
scanf("%s", Men[Number].Country);
printf("Введите название столицы > ");
scanf("%s", Men[Number].City);
printf("Введите кол-во населения > ");
scanf("%i", &Men[Number].Population);
Number++;
} /* End of 'Add' function */
/* Функция для удаления элемента */
void Del(void)
{
int i;
Print();
printf("Введите номер удаляемого элемента > ");
scanf("%i", &i);
if (i < 1 || i > Number)
{
fprintf(stderr, "Элемент с номером %i не существует\n", i);
return;
}
for (i--; i < Number - 1; i++)
Men[i] = Men[i + 1];
Number--;
} /* End of 'Del' function */
/* Функция для сохранения массива в файле */
void Save(void)
{
FILE* F;
int i;
if ((F = fopen("country.txt", "wt")) == NULL)
{
fprintf(stderr, "Невозможно открыть для записи файл 'country.txt'\n");
return;
}
fprintf(F, "%i\n", Number);
for (i = 0; i < Number; i++)
fprintf(F, "%s\n%s\n%i\n", Men[i].Country, Men[i].City, Men[i].Population);
fclose(F);
} /* End of 'Save' function */
/* Функция для чтения массива из файла */
void Load(void)
{
FILE* F;
int i;
if ((F = fopen("country.txt", "rt")) == NULL)
{
fprintf(stderr, "Невозможно открыть для чтения файл 'country.txt'\n");
return;
}
fscanf(F, "%i", &Number);
for (i = 0; i < Number; i++)
fscanf(F, "%s%s%i", Men[i].Country, Men[i].City, &Men[i].Population);
fclose(F);
} /* End of 'Load' function */
/* Функция для упорядочивания массива по названию страны */
void Sort(void)
{
int i, j;
ITEM Temp;
for (j = Number - 1; j > 0; j--)
for (i = 0; i < j; i++)
if (strcmp(Men[i].Country, Men[i + 1].Country) > 0)
{
Temp = Men[i];
Men[i] = Men[i + 1];
Men[i + 1] = Temp;
}
} /* End of 'Sort' function */
/* Вывод меню и чтение номера выбранного пункта */
int Menu(void)
{
int c = 0;
while ((c < '0' || c > '6') && c != 27)
{
printf("|-->0 : выход\n"
"|-->1 : добавить\n"
"|-->2 : сохранить\n"
"|-->3 : загрузить\n"
"|-->4 : вывести\n"
"|-->5 : упорядочить\n"
"|-->6 : удалить\n"
">");
c = getch();
printf("%c\n", c);
}
system("cls");
return c;
} /* End of 'Menu' function */
Source.cpp
#include "Header.h"
void main(void)
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
setlocale(0, "Rus");
int Selection;
while ((Selection = Menu()) != '0' && Selection != 27)
switch (Selection)
{
case '1':
_asm call Add
break;
case '2':
_asm call Save
break;
case '3':
_asm call Load
break;
case '4':
_asm call Print
break;
case '5':
_asm call Sort
break;
case '6':
_asm call Del
break;
}
}