ERLEDIGT
JA
JA
ANTWORTEN
5
5
ZUGRIFFE
675
675
EMPFEHLEN
-
Hallo,
komme leider nicht weiter. Problem ist mit Inkluden von Dateien
Fehlermeldung:
Anbei die Dateien:PHP-Code:1>gui.obj : error LNK2005: "int ziffer1" (?ziffer1@@3HA) ist bereits in calc.obj definiert.
1>gui.obj : error LNK2005: "int a" (?a@@3HA) ist bereits in calc.obj definiert.
main.cpp:
main.h:PHP-Code:#pragma once
#include "main.h"
int main()
{
gui::einlesen();
calc::calculate(a,b,c,d,operand);
gui::printout(ziffer1,ziffer2,overflow_char);
}
calc.cpp:PHP-Code:#pragma once
#include <iostream>
#include <string>
#include "calc.h"
#include "gui.h"
using namespace std;
int a,b,c,d;
char operand;
calc.h:PHP-Code:#include "main.h"
namespace calc
{
void calculate(int a, int b, int c, int d, char operand)
{
if(operand=='+')
{
ziffer2=b+d;
if(ziffer2>10)
{
a++;
ziffer2=ziffer2%10;
}
ziffer1=a+c;
if(ziffer1>10)
overflow_char='x';
}
else
{
if(b<d)
{
b+=10;
c++;
}
ziffer2=b-d;
ziffer1=a-c;
}
}
}
gui.cpp:PHP-Code:#pragma once
char overflow_char='\0';
int ziffer1,ziffer2;
namespace calc
{
void calculate(int a, int b, int c, int d, char operand);
}
gui.h:PHP-Code:#include "main.h"
namespace gui
{
void einlesen(void)
{
cout<<"Bitte geben Sie die vier Ziffern ein: ";
cin>>a>>b>>c>>d;
cout<<"Bitte geben Sie '+' oder '-' ein: ";
cin>>operand;
}
inline void printout(int a,int b, char overflow_char)
{
if(overflow_char=='x')
{
cout<<"OVERFLOW";
}
else
{
cout<<"Ergebnis: "<<ziffer1<<ziffer2<<endl;
}
}
}
Ich danke euch im vorausPHP-Code:#pragma once
#include "main.h"
namespace gui
{
void einlesen(void);
inline void printout(int a,int b, char overflow_char);
}
-
21.11.11 21:31 #2
Probier mal das du ziffer eins als extern erstellst. Oder vll in einem anderen namespace und dann
MeinNameSpace::ziffer1 = 123;
Habe leuder kein Zeit gehabt den Code vollständig zu lesen werde morgen nochmal drüber gucken
Und bitte verbessert mich falls was falsch ist
Fehlermeldung bitte!
Google - Dein Freund und Helfer
-
22.11.11 07:24 #3
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Hi.
Man darf in Header Dateien keine Definitionen vornehmen. Definitionen gehören in genau eine Kompilationseinheit (also .cpp Datei).
Außerdem ist es keine gute Idee "using namespace" in Headerdateien zu notieren (Stichwort: namespace pollution).
Weiterhin solltest du dir aussagekräftigere Namen für Variablen überlegen. (Was soll a, b, c, d sein? Ziffern sind Symbole 0 bis 9 (Dezimalsystem))...?)
Und letztendlich sind globale Variablen kein wirklich guter Stil.
Code cpp:1 2 3 4 5
// main.h // (Vorwärts-) Deklaration extern int a, b, c, d; extern char operand;
GrußCode cpp:1 2 3 4 5
// main.cpp // Definition int a, b, c, d; char operand;
PS: Dasselbe gilt natürlich auch für die anderen Variablen die du in der calc.h definiert hast.Geändert von deepthroat (22.11.11 um 07:28 Uhr)
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
danke dir deepthroat. Deine Empfehlung hat mich gerettet.Das Programm läuft nun.
-
Man könnte auch bei Projektoptionen->Linker->Befehlszeile /FORCE hinzuschreiben.
cwriterIntel inside - Idiot outside :-)
Ich schreibe in C und bin Anfänger.
______________________________
Falls ich eines Tages einen guten Beitrag schreiben werde, bitte bewerten und/oder Danke sagen.
Danke
-
27.11.11 16:52 #6
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Was allerdings nicht wirklich empfehlenswert und nur ein letzter Ausweg ist.
http://msdn.microsoft.com/en-us/library/70abkas3.aspx
GrußAfile created with this option may not run as expected. The linker will not link incrementally when the /FORCE option is specified.If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
Ähnliche Themen
-
error LNK2005
Von samkirchner im Forum C/C++Antworten: 3Letzter Beitrag: 27.08.09, 11:10 -
error LNK2005 und #pragma once
Von noZmo im Forum C/C++Antworten: 5Letzter Beitrag: 21.07.09, 08:07 -
Error LNK2005 - Mehrfachdeklaration Verständnisproblem
Von Skid im Forum C/C++Antworten: 8Letzter Beitrag: 02.03.09, 11:16 -
[C++]Klasse in main.obj bereits definiert Fehler
Von Sebastian Thalhammer im Forum C/C++Antworten: 3Letzter Beitrag: 26.06.08, 16:02 -
Konstanten bereits definiert
Von Stelo im Forum PHPAntworten: 3Letzter Beitrag: 13.04.07, 15:20





Zitieren

Login






