C Многократное определение / сначала определенная здесь ошибка
Я пытаюсь написать программу для книжного магазина и получаю сообщение об ошибке "множественное определение" в файле исходного кода при реализации моей функции.
Вот мой файл Book.c:
#include "Book.h"
void scanBook(book_t* bk) //error here
{
//implementation here
}
Вот мой файл Book.h:
#pragma once
#include <stdio.h>
typedef char* str;
typedef enum Genre {Education, Business, Novel} genre_t;
typedef struct Book{
str ISBN;
str title;
str author;
float price;
int quantity;
genre_t genre;
} book_t;
void scanBook(book_t* bk);
А вот мой файл main.c:
#include "Book.h"
#include "Book.c"
int main()
{
return 0;
}
Ошибка возникает в функции scanBook в Book.c, но я не знаю почему, так как я включил заголовочный файл, а также #pragma один раз, и в заголовочном файле я объявил функцию. В нем говорится, что несколько определений 'scanBook' и obj\Debug\Book.o .... впервые определены здесь.
Любая помощь или разъяснение будет принята с благодарностью!
1 ответ
Решение - удалить эту строку:
#include "Book.c"
В C и C++ обычно просто включаются файлы заголовков (.h и.hpp), потому что вы передаете файлы.c и.cpp непосредственно компилятору, поэтому включение их также будет неоднозначным.