Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Multiple Konstantendefinition

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
31.05.2012, 00:59 Uhr
banshee



Hallo,

sehr merkwürdiges Problem mit multiplen Definitionen.

Ich habe eine Datei Constants.h, die mehrere Konstanten definiert, darunter zwei const char* C-strings. Diese binde ich einmal im Header einer Klasse foo und der main.cpp ein. Egal ob ich die beiden String-Konstanten irgendwo verwende oder nicht, kriege ich den Fehler, dass die Erstdefinition in main.o ist und eine zweite in foo.o. Include-Guards verwende ich natürlich überall, aber am Fehler ändert sich auch nichts, wenn ich ihn rausnehme (auch nicht, wenn ich die Konstanten ganz rausnehme, funktioniert es ohne guard mit allen anderen Konstanten noch). Merkwürdigerweise funktioniert es für alle anderen Konstanten (uint, double) problemlos.

Kann sich da jemand einen Reim drauf machen? Ansonsten versuche ich mal ein Minimalbeispiel zu konstruieren.

Achja: Wenn ich diese beiden Konstanten durch defines ersetze, geht es.

Dieser Post wurde am 31.05.2012 um 01:00 Uhr von banshee editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
31.05.2012, 07:37 Uhr
Tommix



'Morgen,

Zitat:
Ansonsten versuche ich mal ein Minimalbeispiel zu konstruieren.

Das wäre vielleicht nicht schlecht. Aber vermutlich läuft es darauf hinaus, daß Du Deklaration und Definition trennen mußt, also im Header

C++:
extern char const* s;


und dann in einem Quelltext, meinetwegen Constants.c

C++:
#include "Constants.h"
char const* s = "...";


Include-Guards verhindern nur, dass ein Header in ein und demselben Quelltext mehrmals eingebunden wird und haben mit der Problematik nichts zu tun.

Gruß,
Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
31.05.2012, 08:06 Uhr
ao

(Operator)



Zitat von banshee:

Ansonsten versuche ich mal ein Minimalbeispiel zu konstruieren.

Ja, bitte die Codestellen zeigen und die Fehlermeldung. Alles andere ist Interpretation und Rumstochern im Nebel.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
01.06.2012, 16:34 Uhr
banshee




Zitat von Tommix:
Das wäre vielleicht nicht schlecht. Aber vermutlich läuft es darauf hinaus, daß Du Deklaration und Definition trennen mußt


Aber warum? Eine Konstante will ich doch eigentlich möglichst bei ihrer Deklaration auch initialisieren.

Es hat sich aber eigentlich erledigt, weil ich die Implementierung noch mal überarbeitet habe und jetzt auch einen std::string verwende. Mit dem geht es auch so.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: