C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Definition vs Deklaration

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (German)
View previous topic :: View next topic  
Author Message
Walther Ypsilanti
Guest





PostPosted: Sun Mar 06, 2005 8:44 pm    Post subject: Definition vs Deklaration Reply with quote



Hallo,

ich habe Schwierigkeiten damit, für folgende Definitionen eine
Deklaration zu schreiben, die keine Definition ist. Die sind aus der
Übung 2 vom Abschnitt 4.11 der Bibel:

1) typedef complex<short> Point;

2) enum Beer {Carlsberg, Tuborg, Thor};

3) namespace NS {int a};

So wie die Aufgabe gestellt ist, scheint das aber Was verstehe ich
nicht/falsch?

Walther

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
Back to top
Thomas Maeder
Guest





PostPosted: Sun Mar 06, 2005 10:28 pm    Post subject: Re: Definition vs Deklaration Reply with quote



Walther Ypsilanti <opllqo2004 (AT) yahoo (DOT) de> writes:

Quote:
ich habe Schwierigkeiten damit, für folgende Definitionen eine
Deklaration zu schreiben, die keine Definition ist. Die sind aus der
Übung 2 vom Abschnitt 4.11 der Bibel:

1) typedef complex<short> Point;

Das ist bereits eine Deklaration, welche keine Definition ist.


Quote:
2) enum Beer {Carlsberg, Tuborg, Thor};

enum-Typen kann man nicht deklarieren, ohne sie zu definieren.


Quote:
3) namespace NS {int a};

namespace NS
{
extern int a;
}

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Stefan Reuther
Guest





PostPosted: Sun Mar 06, 2005 10:51 pm    Post subject: Re: Definition vs Deklaration Reply with quote



Walther Ypsilanti wrote:
Quote:
ich habe Schwierigkeiten damit, für folgende Definitionen eine
Deklaration zu schreiben, die keine Definition ist. Die sind aus der
Übung 2 vom Abschnitt 4.11 der Bibel:

1) typedef complex<short> Point;

Das ist eine Typdefinition. Die kann man nicht deklarieren.

Quote:
2) enum Beer {Carlsberg, Tuborg, Thor};

Gleichfalls. gcc versteht als Erweiterung 'enum Beer;', aber das ist
nicht Standard. "Vorwärtsdeklarieren" kann man in C++ nur Klassen.

Quote:
3) namespace NS {int a};

Den Namespace kann man nicht deklarieren, wohl aber Variablen:
namespace NS { extern int a; }

Quote:
So wie die Aufgabe gestellt ist, scheint das aber Was verstehe ich
nicht/falsch?

Manchmal ist 'geht nicht' eben auch eine richtige Antwort.


Stefan

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Thomas Maeder
Guest





PostPosted: Mon Mar 07, 2005 4:51 pm    Post subject: Re: Definition vs Deklaration Reply with quote

Stefan Reuther <stefan.news (AT) arcor (DOT) de> writes:

Quote:
1) typedef complex<short> Point;

Das ist eine Typdefinition. Die kann man nicht deklarieren.

Was wird denn hier definiert?

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Stefan Reuther
Guest





PostPosted: Mon Mar 07, 2005 6:00 pm    Post subject: Re: Definition vs Deklaration Reply with quote

Thomas Maeder wrote:
Quote:
Stefan Reuther <stefan.news (AT) arcor (DOT) de> writes:
1) typedef complex<short> Point;

Das ist eine Typdefinition. Die kann man nicht deklarieren.

Was wird denn hier definiert?

Ein Typ namens 'Point'.

Ich würde das durchaus als Definition bezeichnen. Auf einen Streit würde
ich's aber eher nicht ankommen lassen. Zumindest ist meine Ausgabe des
Stroustrup (3. Auflage von 1998) da eh nicht ganz konsistent. Um gleich
mal die ersten beiden Sätze von 4.9.7 zu zitieren (Hervorhebung von
mir): "Eine Deklaration mit dem Präfix texttt{typedef} *deklariert*
einen neuen Namen für den Typ [...] Ein so *definierter* Name,
gewöhnlich als »textit{typedef}« bezeichnet, [...]"

Eine Deklaration, die keine Definition ist, müsste hier z.B. aussagen,
dass 'Point' ein Typ ist, aber nicht welcher. Und so etwas gibt es nicht.


Stefan

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Rolf Magnus
Guest





PostPosted: Mon Mar 07, 2005 6:16 pm    Post subject: Re: Definition vs Deklaration Reply with quote

Stefan Reuther wrote:

Quote:
Thomas Maeder wrote:
Stefan Reuther <stefan.news (AT) arcor (DOT) de> writes:
1) typedef complex<short> Point;

Das ist eine Typdefinition. Die kann man nicht deklarieren.

Was wird denn hier definiert?

Ein Typ namens 'Point'.

Nein, es wird kein Typ definiert. Den Typ gab es schon vorher. Er bekommt
lediglich noch einen anderen Namen. Das Schlüsselwort hätte statt 'typedef'
besser 'alias' geheißen.

Quote:
Ich würde das durchaus als Definition bezeichnen. Auf einen Streit würde
ich's aber eher nicht ankommen lassen. Zumindest ist meine Ausgabe des
Stroustrup (3. Auflage von 1998) da eh nicht ganz konsistent. Um gleich
mal die ersten beiden Sätze von 4.9.7 zu zitieren (Hervorhebung von
mir): "Eine Deklaration mit dem Präfix texttt{typedef} *deklariert*
einen neuen Namen für den Typ [...] Ein so *definierter* Name,
gewöhnlich als »textit{typedef}« bezeichnet, [...]"

Eine Deklaration, die keine Definition ist, müsste hier z.B. aussagen,
dass 'Point' ein Typ ist, aber nicht welcher. Und so etwas gibt es nicht.

struct Foo;
typedef Foo Blah;

Was wird hier definiert?

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Stefan Reuther
Guest





PostPosted: Mon Mar 07, 2005 6:47 pm    Post subject: Re: Definition vs Deklaration Reply with quote

Rolf Magnus wrote:
Quote:
Stefan Reuther wrote:
1) typedef complex<short> Point;

Das ist eine Typdefinition. Die kann man nicht deklarieren.

Was wird denn hier definiert?

Ein Typ namens 'Point'.

Nein, es wird kein Typ definiert. Den Typ gab es schon vorher. Er bekommt
lediglich noch einen anderen Namen. Das Schlüsselwort hätte statt 'typedef'
besser 'alias' geheißen.

Dann wird eben ein Aliasname definiert.

Wie gesagt, auf einen Streit über Worte würde ich mich hier nicht
einlassen. Die im OP zitierte Aufgabe ist jedenfalls für diese Zeile
nicht lösbar, vollkommen gleich, ob wir den typedef (NB: typedef, nicht
typedecl) als Definition oder Deklaration bezeichnen.

Quote:
Eine Deklaration, die keine Definition ist, müsste hier z.B. aussagen,
dass 'Point' ein Typ ist, aber nicht welcher. Und so etwas gibt es nicht.

struct Foo;
typedef Foo Blah;

Was wird hier definiert?

Es wird definklariert, dass 'Blah' der gleiche Typ ist wie 'Foo'.

Ein Sprachmittel, welches nur aussagt, dass 'Blah' ein Typedef-Name ist,
nicht jedoch, welcher Typ sich dahinter verbirgt, gibt es nicht.


Stefan

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (German) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.