01/10/2018, 13:42
Cách xử lý lỗi error c2011
Định nghĩa chồng khi 1 lớp hoặc cấu trúc được gọi 2 lần trong 1 file nguồn. Đây là lỗi thời gian biên dịch và thường xuất hiện khi gọi nhiều file header trong 1 file header khác, làm cho header được gọi 2 lần khi bạn biên dịch file nguồn (trong MSVC, lỗi này có dạng như “error CS2011: ‘MyStruct’ : ‘struct’ type redefinition).
em có 3 file như sau
quanlysach.h
struct sach
{
char masach[10];
char tensach[100],theloai[60],NXB[60],tacgia[60];
int slsach,slhientai,slsbimuon,Namxb;
long giasach;
};
void nhapthongtinsach(sach Sach[],int &M);
void thongtinsach(sach S[],int M);
void luuttsach(sach S[],int M);
void doctt_sach(sach S[],int &M);
void themsach(sach S[],int &M,int slsthem);
void chinhsuasach(sach S[],int index,int M);
void xoattsach(sach S[],int &M,int index);
int laychiso_ISBN(sach S[],char ISBN[10],int M);
void timkiemtheotensach(sach S[],char tensach[100],int M);
void xuattt1cuonsach(sach S[],int index4);
int kiemtramasach(sach S[],char masach[10],int M,int index);
docgia.h
struct DATE
{
int ngay,thang,nam;
};
struct docgia
{
char madocgia[10];
char tendocgia[60];
char CMND[10];
char diachi[60];
char email[60];
char gioitinh[4];
struct DATE ngaysinh;
struct DATE ngaylapthe;
struct DATE ngayhethanthe;
};
void xuatdocgia(docgia DG[],int N);
void nhapthongtin(docgia DG[],int &N);
void ghifile(docgia DG[],int N);
void docfile_dg(docgia DG[],int &N);
void xoadocgia(docgia DG[],int &N,int index1);
int laychiso(docgia DG[],char madocgia[10],int N);
void sttdg(docgia DG[],int index);
void themdocgia(docgia DG[],int Slthem, int &N);
void xoadocgia(docgia DG[],int &N,int index1);
int laychiso_cmnd(docgia DG[],char CMND[10],int N);
void timdgtheohoten(docgia DG[],char tendocgia[60],int N);
void xuatthongtin1dg(docgia DG[],int index);
muonsach.h
struct DATE
{
int ngay,thang,nam;
};
struct phieumuon
{
char maphieu[10];
char madocgiamuon[10];
char tendgmuonsach[60];
DATE ngaymuon;
DATE ngaytra_dk;
char ISBN_muon[3][100];
int slsmuondoc;
};
void nhapngay(DATE ngaymuon);
bool kiemtrasach(sach S[],int index);
bool kiemtra_maphieu(phieumuon PM[], char maphieu[10],int sophieu);
void lapphieumuonsach(docgia DG[], sach S[],phieumuon PM[],int N,int M,int &sophieu);
void lapphieumuonsach(docgia DG[], sach S[],phieumuon PM[],int N,int M,int &sophieu);
void inphieumuon(phieumuon PM[],sach S[],int M,int index);
int namnhuan(int nam);
int ktthang(int thang,int nam);
void ngayhethan(DATE &ngaymuon,DATE &ngaytra_dk);
int vitri(DATE ngay);
int songaymuon(DATE ngaymuon, DATE ngaytra);
đây là đoạn nó báo lỗi

mong các anh chị giúp em với
Bài liên quan
Câu này không phải C.
Đúng lí thì bọc vào
#ifndef... #define... #endif
, nhưng VS đã có#pragma once
.à tại em chưa học con trỏ nên thầy cho phép dùng lộn qua C++
khi bọc #ifndef… #define… #endif thì làm sao để em có thể lấy đc định nghĩa 1 struct trong file .h này qua file .h khác, hay là em phải định nghĩa lại một cái struct tương tự nhưng khác tên ạ