Több *. cpp fájlból álló c++ project, hogyan?
A headerbe kell egy include guard, ami megakadályozza, hogy többször fusson le. Általában a fejlesztőkörnyezetek tudnak ilyet generálni.
Kb hasonlóan néz ki:
#ifndef HEADER_H_INCLUDED
#define HEADER_H_INCLUDED
//és ide írod a kódokat
#endif
"HEADER_H_INCLUDED"
Igen, csak legyen egyedi a név, ne minden header-ben ugyanez a szimbólum szerepeljen. :)
Kérdező, gondolom kiírja, hogy mi van duplán deklarálva. Arra keress rá a fájlokban, és jó esetben egyből látszik a gond.
A main.cpp tartalma:
#include "TMoJ_header.h" //hozzá adva a projecthez
using namespace std;
//pár vector és enum amit csak itt szeretnék használni
int main(){
SetConsoleOutputCP(1250);
while (!menu==FALSE){
system("cls);
cout<<"1: Új játék\n2: Folytatás\n3: Kilépés";
ch1=_getch();
switch (ch1){
case '1':storyTellerBS(); menu=FALSE; brea;
default: menu=TRUE; break;
}
return 0;
}
Az include file tartalma (TMoJ_header.h):
#include <windows.h>
#include <iostream>
#include <ctime>
#include <vector>
//és még sok más
#define dice6 (rand()%6+1)
#define Split c_str
#ifndef TMOJ_HEADER_H_INCLUDED
#define TMOJ_HEADER_H_INCLUDED
char ch1=' ';
bool menu=TRUE, win=TRUE;
int hpp(111), dp(222), lp(333);
int potionCharge, foodCharge;
int save, fightSave;
int gameID;
int health, dexterity, luck;
signed int atrib[7];
void storyTellerBS();
int main();
int Load();
void backPackWriteOut();
//stb;
#endif //TMOJ_HEADER_H_INCLUDED
A második (storyTeller).cpp tartalma:
#include "TMoJ_header.h"
using namespace std;
string line;
void stroyTeller(void){
system("cls");
ifstream novell("bin/Debug/StoryElements/BS/BS1.txt");
while(novell.good()){
getline(novell, line);
cout<<line<<endl;
}
novell.close();
system("pause");
}
A hiba üzenetek:
"In function 'Z13storyTellerBSv':
multiple definition of 'potionCharge'
first definited here" //Ha erre rákattintok akkor oda ugrik a main függvényhez
"error: 1d returned 1 exit status"
Nagyságrendileg 20-21 hibát dob ebből az "error: 1d returned 1 exit status" mindig benne van de a multiple definitiont váltogatja, hogy éppen melyik változó többször definiálva.
#ifndef TMOJ_HEADER_H_INCLUDED
#define TMOJ_HEADER_H_INCLUDED
Ezeket mindig a fájl legelejére tedd.
Át raktam a header file legelejére ezeket:
#ifndef TMOJ_HEADER_H_INCLUDED
#define TMOJ_HEADER_H_INCLUDED
És még mindig ugyanazokat a hibákat dobja.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!