Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (GNU/Linux, *NIX, *BSD und Co) » enum-Forwarddeklaration im GCC ?

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
04.06.2006, 20:10 Uhr
Oliver
S2-Pixelgeneral


Wieso nimmt der der gcc bzw mingw (ist ja quasi dasselbe) keine enum-Deklaration an? Also sowas:


C++:
enum lalala;



wirft folgenden Fehler(im DevC++):


Zitat von DevC++:

use of enum `lalala' without previous declaration



Aber mit einem enum erstellt man doch auch einen Typ wie mit struct, class etc. Wieso sollte das nicht gehen, VC kann das komischerweise?
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
05.06.2006, 00:03 Uhr
kronos
Quotenfisch
(Operator)


enum allein ist kein vollständiger typ, sondern erst mit 'ner namensliste. auf was willst du denn hinaus?
--
main($)??<-$<='?'>>2?main($-!!putchar(
(("$;99M?GD??(??/x0d??/a:???;a"+'?'/4)
??($??)+'?'/3-2-1+$%2)??''?')):'?';??>
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
05.06.2006, 09:10 Uhr
Oliver
S2-Pixelgeneral


Auf was ich hinaus will, einfach um nicht künstliche Abhängigkeiten zu erzeugen.

Ich hab einen Header, in der die enums deklariert (oder definiert? wie immer man das auch nennen mag) sind:


C++:
enum lalala
{ la, li, lu };




Nun hab ich eine Klasse in einem anderen Header, die eine Funktion benutzt mit einem lalala Parameter:


C++:
void lalilu(lalala parameter);



Da ja lalala nicht bekannt ist, muss ich also die Headerdatei mit dem enum lalala dort einbinden bei der Klasse, also Headerdatei in Headerdatei, obwohl ja normalerweise eine Forwarddeklaration reicht, wie man das bei Klassen z.B. auch macht. Nun binden viele anderen Dateien die Header mit der Klasse ein, und alle (das sind sehr viele) müssen jedesmal neu kompiliert werden, wenn ich etwas an der Datei mit u.a. dem enum lalala ändere, obwohl sie damit gar nichts zu tun haben, weil sie die Funktion gar nicht aufrufen.
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
05.06.2006, 11:25 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hi:


Zitat:

There is really no such thing as "forward declaration" for enumerated
types in C or C++ ISO standards (hence the respective language
definitions).



C++:
  /* This is NOT OK. */
  enum foo;
  enum foo { foo1 = 0 };

  /* This is OK however. */
  enum foo { foo1 = 0 };
  enum foo;



Well, all those other compilers have implemented this as an extension
obviously.



Ansonsten gibts da einen "class/struct2enum"-Workaround:

www.ddj.com/dept/cpp/184403894
--
class God : public ChuckNorris { };

Dieser Post wurde am 05.06.2006 um 11:26 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (GNU/Linux, *NIX, *BSD und Co) ]  


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: