Gast
#3120063
Hallo zusammen, kann man den "Glue" Operator (##) auch auf Strings anwenden? Bsp.:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
Danke für die Hilfe! Gruß Manfred
|
Anzeige
|
## Operator bei Strings
Gast
#3120063
Hallo zusammen, kann man den "Glue" Operator (##) auch auf Strings anwenden? Bsp.:
Danke für die Hilfe! Gruß Manfred COMMAND_SET_VALUE schrieb: > Hallo zusammen, > > kann man den "Glue" Operator (##) auch auf Strings anwenden? Du brauchst ihn eigentlich gar nicht. Denn eine Abfolge von Strings muss vom Compiler sowieso zu einem einzigen String zusammengezogen werden. Also einfach
CMD_POWER_ON ist für den Compiler ein einziger String
"Sx_ON_xE"
Genau das ist zb der Trick, warum man
machen kann. Also einen String auf mehrer Programmzeilen verteilen, so dass man im Code sieht, wie die Ausgabe auf der Konsole aussehen wird, aber trotzdem keine großartigen Klimmzüge machen muss oder mehrere printf benutzen muss. Eine Abfolge von Stringliteralen wird vom Compiler automatisch zu einem einzigen String-Literal zusammengezogen. Bei CMD_SET_VALUE(value) könnte das bei dir zu einem Problem werdenm, wenn value kein String Literal ist, aber ansonsten sollte das auch so gehen. Allerdings: Auf die Art baust du dir eine Menge langer String Literale zusammen. Was spricht gegen eine Funktion, die einfach einen String ausgibt und davor und dahinter den Prafix bzw. Postfix drann hängt?
Gast
#3120149
Hi! Danke für den Hinweis, muss ich gleich mal ausprobieren. Bzgl. deinem Vorschlag mit dem Senden: So ähnlich sieht es bei mir auch aus, nur wird bei jedem Senden auch ein Zähler inkrementiert, der mitgeschickt wird. Das würde dann nicht mehr passen. Gemäß Zähler würden dann 3 Befehle verschickt worden sein, in Wirklichkeit aber nur einer. Müsste man dann über einen weiteren Parameter abfangen... COMMAND_SET_VALUE schrieb: > Hi! > > Danke für den Hinweis, muss ich gleich mal ausprobieren. > > Bzgl. deinem Vorschlag mit dem Senden: > So ähnlich sieht es bei mir auch aus, nur wird bei jedem Senden auch ein > Zähler inkrementiert, der mitgeschickt wird. Das würde dann nicht mehr > passen. Gemäß Zähler würden dann 3 Befehle verschickt worden sein, in > Wirklichkeit aber nur einer. Müsste man dann über einen weiteren > Parameter abfangen... Kann man so sehen. Man kann es aber auch so sehen, dass das Inkrementieren des Zählers an der falschen Stelle im Code sitzt. void SendCommand( const char* cmd ) { sendString( PREFIX ); sendString( cmd ); sendString( POSTFIX ); counter++; } Die Funktion sendString kümmert sich dann nicht mehr um den Zähler, sondern macht das (und nur das) was aussen drauf steht. Einen (Teil-) String versenden. Da ich aber den restlichen Aufbau deines Systems nicht kenne, möchte ich mich da jetzt nicht mehr weiter aus dem Fenster lehnen.
Gast
#3120187
Ne geht nicht. Der Zähler wird im Sendframe mitgeführt. Der Command der geschickt wird, ist quasi der zu übertragende Datenstrom. Da kommt noch das Kommunikationsprotokoll außen herum. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|