Kezdőoldal » Számítástechnika » Programozás » Több *. cpp fájlból álló c++...

Berberus kérdése:

Több *. cpp fájlból álló c++ project, hogyan?

Figyelt kérdés
Nos az lenne az alap helyzet, hogy éppen nagyon tanulom a c++-t és van egy meglehetősen terjengősre sikeredett saját, házi project-em és azt szeretném elérni, hogy a main.cpp fájlban vannak a vezérlő egységek és monjuk egy storyTeller.cpp fájlban vannak az olyan függvények amik csak kiírnak valamit a képernyőre. Addig eljutottam, hogy a projectemnek saját header fájlja van, viszont amikor hozzá adok egy újabb *.cpp fájlt a projecthez és ugyan azt a header-t is használják, akkor vagy deklarációs hibát, vagy pedig: "Id returned 1 exit status"-hibát dob.

2018. okt. 26. 18:01
 1/9 anonim ***** válasza:
#pragma once
2018. okt. 26. 18:31
Hasznos számodra ez a válasz?
 2/9 anonim ***** válasza:

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

2018. okt. 26. 19:16
Hasznos számodra ez a válasz?
 3/9 A kérdező kommentje:
A header tartalmaz include blokkolót (a Code::Blocks 17.12 megcsinálta) és így is multiply declarationt dob.
2018. okt. 26. 20:06
 4/9 anonim ***** válasza:
Látatlanul nem tudok mit mondani. Valamit elszúrtál.
2018. okt. 26. 21:15
Hasznos számodra ez a válasz?
 5/9 anonim ***** válasza:

"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.

2018. okt. 26. 22:08
Hasznos számodra ez a válasz?
 6/9 A kérdező kommentje:

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.

2018. okt. 27. 12:16
 7/9 anonim ***** válasza:

#ifndef TMOJ_HEADER_H_INCLUDED

#define TMOJ_HEADER_H_INCLUDED

Ezeket mindig a fájl legelejére tedd.

2018. okt. 27. 13:21
Hasznos számodra ez a válasz?
 8/9 A kérdező kommentje:

Á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.

2018. okt. 27. 15:06
 9/9 A kérdező kommentje:
Na most az van, hogy végre találtam eg megoldást ami azt az eredményt hozza amit én szeretnék (tény, hogy ettől a megoldástól bármelyik önérzetes programozó elsírná magát... és még a hajamat is kitépné). Nade a lényeg annyi, hogy amit eddig egy *.cpp file-ban akartam elhelyezni azt most egy *.h-ba raktam bele, ami includolja azt a headert amiben deklarálva vannak a változók és a függvény prototípusok, a main.cpp file pedig mind a két headert meghívja... Magyon szépen köszönöm a segítségeket! (Őszintén)
2018. okt. 31. 09:49

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!