Thread View: de.comp.lang.c++
5 messages
5 total messages
Started by Bernhard Ruch
Wed, 17 Apr 1996 10:44
typedef in einem Makro
Author: Bernhard Ruch
Date: Wed, 17 Apr 1996 10:44
Date: Wed, 17 Apr 1996 10:44
32 lines
1363 bytes
1363 bytes
Ist es moeglich, folgendes Problem mit Makros zu loesen?
Ich moechte, fur eine beliebige Klasse, einen neuen Datentyp
definieren (einen Pointer auf die Klasse), und eine Funktion,
die diesen Pointer als Argument hat.
Der Name des Datentyps sollte aus dem Namen der Klasse + "Pointer"
bestehen.
z.B. fuer die Klasse "Object":
typedef Object* ObjectPointer;
int Display (ObjectPointer pObject);
Ich versuchte es mit folgendem Makro:
#define CLASSPOINTER(CLASSNAME) typedef CLASSNAME* CLASSNAMEPointer; \
int Display (CLASSNAMEPointer pCLASSNAME);
CLASSPOINTER(Object)
Das Problem ist nun, dass "CLASSNAME" in "CLASSNAMEPointer" nicht durch
"Object" ersetzt wird
Gibt es irgendeine Methode, einen Teil eines Typ-Namens (oder Variablen-Namens)
in einem Makro durch ein Argument zu ersetzen? (z.B. $(CLASSNAME) wie im Makefile)
Bernhard
RE: typedef in einem Makro
Author: Klaus Ludwig
Date: Wed, 17 Apr 1996 12:05
Date: Wed, 17 Apr 1996 12:05
19 lines
875 bytes
875 bytes
On Mittwoch, 17. April 1996, Bernhard Ruch wrote...
> #define CLASSPOINTER(CLASSNAME) typedef CLASSNAME* CLASSNAMEPointer;
\
> int Display (CLASSNAMEPointer pCLASSNAME);
>
> CLASSPOINTER(Object)
>
> Das Problem ist nun, dass "CLASSNAME" in "CLASSNAMEPointer" nicht durch
> "Object" ersetzt wird
Versuchs doch mal mit zwei Gartenzäune: ##.
Beispiel:
#define M(Argument) int x##Argument
void main (void)
{
M(Hallo);
xHallo = 0;
}
Re: typedef in einem Makro
Author: Frank Nobis
Date: Wed, 17 Apr 1996 13:26
Date: Wed, 17 Apr 1996 13:26
29 lines
1158 bytes
1158 bytes
Bernhard Ruch <Bernhard.Ruch@studi.epfl.ch> writes: > > Ist es moeglich, folgendes Problem mit Makros zu loesen? > Ja, ist es. > Ich versuchte es mit folgendem Makro: > > > #define CLASSPOINTER(CLASSNAME) typedef CLASSNAME* CLASSNAMEPointer; \ > int Display (CLASSNAMEPointer pCLASSNAME); > > CLASSPOINTER(Object) > > > Das Problem ist nun, dass "CLASSNAME" in "CLASSNAMEPointer" nicht durch > "Object" ersetzt wird Ersetze CLASSNAMEPointer durch CLASSNAME##Pointer Andernfalls wird keine Ersetzung stattfinden. Grusß Frank -- Frank Nobis Email: fn@Radio-do.de PGP AVAILABLE Landgrafenstr. 130 dg3dcn http://www.radio-do.de/~fn/ 44139 Dortmund Powered by FreeBSD Fax: +49 231 7213816
Re: typedef in einem Makro
Author: Goetz Winterfeldt
Date: Wed, 17 Apr 1996 15:54
Date: Wed, 17 Apr 1996 15:54
31 lines
1392 bytes
1392 bytes
(...)
#define CLASSPOINTER(CLASSNAME) typedef CLASSNAME* CLASSNAMEPointer; \
int Display (CLASSNAMEPointer pCLASSNAME);
CLASSPOINTER(Object)
(...)
Eine andere Moeglichkeit als die schon genannten waere die name()
Functionen zu benutzten:
#include <generic.h>
#define CLASSPOINTER(CLASSNAME) name2(CLASSNAME,Pointer);
CLASSPOINTER(Object)
Goetz
--
---------------------------------------------------------------------
Goetz Winterfeldt
Centre Hospitalier Where ever you are ....
Universitaire de Nancy
(CHU) ^^ ***
54511 Vandoeuvre Cedex ^^
____________________
Tele: ++33 83154540
Email: g.winterfeldt@chu-nancy.fr
Re: typedef in einem Makro
Author: Walter Doerwald
Date: Thu, 18 Apr 1996 23:27
Date: Thu, 18 Apr 1996 23:27
40 lines
1789 bytes
1789 bytes
Bernhard Ruch schrieb in <3174CB7F.41C6@studi.epfl.ch> folgendes: > Ist es moeglich, folgendes Problem mit Makros zu loesen? > > Ich moechte, fur eine beliebige Klasse, einen neuen Datentyp > definieren (einen Pointer auf die Klasse), und eine Funktion, > die diesen Pointer als Argument hat. > Der Name des Datentyps sollte aus dem Namen der Klasse + "Pointer" > bestehen. > > z.B. fuer die Klasse "Object": > > typedef Object* ObjectPointer; > > int Display (ObjectPointer pObject); > > > Ich versuchte es mit folgendem Makro: > > > #define CLASSPOINTER(CLASSNAME) typedef CLASSNAME* CLASSNAMEPointer; \ > int Display (CLASSNAMEPointer pCLASSNAME); > > CLASSPOINTER(Object) > > > Das Problem ist nun, dass "CLASSNAME" in "CLASSNAMEPointer" nicht durch > "Object" ersetzt wird > > Gibt es irgendeine Methode, einen Teil eines Typ-Namens (oder Variablen-Namens) > in einem Makro durch ein Argument zu ersetzen? (z.B. $(CLASSNAME) wie im Makefile) Theoretisch mit CLASSNAME##Pointer Aber man sollte immer so weit wie möglich vermeiden mit Makros zu arbeiten. (Insbesondere natürlich mit diesen Token-Pasting-Macros) Und in diesem Fall sehe ich auch eigetnlich keinen besondere Grund mit sowas zu arbeiten. Bis demnächst... Walter Dörwald
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads