Ein Makro der seltenen Art?
-
HeroHolger schrieb:
1. bitte keine Notationsdiskussion
Angst, dass deine Notation nichts taugt?
2. das sind keine Klassen sondern große IF-Strukturen(c-typen) die im Netzwerk verschickt werden.
Ok, das ist doch schon mal was.
3. Deine Beispielmethode ist das Äquivalent zu meiner Methode mti dem namen
"InterpolateAngleData" und würde nicht das Copy/Paste-Problem lösen.Doch, denn du müsstest es nur ein einziges Mal richtig hinschreiben, dann benutzt du immer die Methode. Das ist die gleiche Idee wie mit den Makros, nur ohne die Probleme von Makros.
Ich suche allerdings eine Lösung wo ich nicht 3x den Variablennamen schreiben muss.
so halt irgendwieINTERPOL_ANGLE(Pos.Lat);
Das leistet die Funktion doch.
-
zu 3. nein, das tut sie nicht.
du musst 3x mal den Variablennamen hinschreiben. und das will ich eben nicht.
-
HeroHolger schrieb:
aHsDyn.Pos.Lat = InterpolateAngleData(aIt_alt->second.Pos.Lat,aIt_neu->second.Pos.Lat ); aHsDyn.Pos.Lon = InterpolateAngleData(aIt_alt->second.Pos.Lon,aIt_neu->second.Pos.Lon );[...]
#define INTERPOL_ANGLE(NAME) aHsDyn.##NAME = InterpolateAngleData((double)aIt_alt->second.##NAME,(double)aIt_neu->second.##NAME ) INTERPOL_ANGLE(Pos.Lat);Was erhoffst du dir von dem ##-Operator? Lass den mal weg.
-
HeroHolger schrieb:
Aber ich bekomme den Fehler(3x) für das makro
error: pasting "." and "Pos" does not give a valid preprocessing token
ich vermute, dass bedeutet, dass die Kombination ".##NAME" nicht zulässig ist...aber warm nicht?
Die Fehlermeldung ist eigentlich eindeutig. Die einzigen Token, die mit . beginnen, sind die . und .* Operatoren, die ... Ellipse, sowie bestimmte (Gleitkomma-)Literale.
Verlier einfach den ##-Operator an dieser Stelle.
-
Ansonsten schreibst Du dreimal das Makro im Text.
Eine Funktion/Mehtode ist definitiv der bessere Weg.
Makros sind mies (persönliche Meinung und Erfahrung)
Makros & objektorientierte Programmierung sind scheisse.
-
Was erhoffst du dir von dem ##-Operator? Lass den mal weg.
schaust du hier
http://gcc.gnu.org/onlinedocs/cpp/Concatenation.html#Concatenationso in etwa will ich das haben. ohne ## kommst du m.E. nicht weit.
Wenn du ohne ## arbeitest weiß der precompiler garnicht, was du machen willst.
-
HeroHolger schrieb:
ohne ## kommst du m.E. nicht weit.
Tu's doch einfach...

-
@Swordfish: oha, manchmal ist die Lösung doch so nahe. er scheint das wirklich zu akzeptieren ^^
-
HeroHolger schrieb:
Was erhoffst du dir von dem ##-Operator? Lass den mal weg.
schaust du hier
http://gcc.gnu.org/onlinedocs/cpp/Concatenation.html#Concatenationso in etwa will ich das haben. ohne ## kommst du m.E. nicht weit.
Wenn du ohne ## arbeitest weiß der precompiler garnicht, was du machen willst.
Welcher Precompiler?
Der Link beantwortet übrigens nicht die Frage.
-
HeroHolger schrieb:
Was erhoffst du dir von dem ##-Operator? Lass den mal weg.
schaust du hier
http://gcc.gnu.org/onlinedocs/cpp/Concatenation.html#ConcatenationDu bist ja mal ein Scherzkeks

-
ok
Danke erstmal nochmal an Alle die mir geholfen!
Thread kann zugemacht werden.
Der Fehler saß wie üblich vorm Monitor ^^
-
HeroHolger schrieb:
Der Fehler saß wie üblich vorm Monitor ^^
Die kanonische Variante wäre "Fehler existiert zwischen Tastatur und Sessel".