Forum: Compiler & IDEs #define ausgeben


von Mr. #define (Gast)


Lesenswert?

Hallo Leute,

mal eine dumme frage wie kann ein #define ausgeben, also z.B. auf einem 
Display, damit meine ich nicht!!! defines die als string angelegt worden 
sind wie:
1
#define TEST "Gib mich aus!"
2
....
3
LCD_string(TEST);

sondern sowas, wo im define ein Wert hinterlegt worden ist.
1
#define TEST 5
2
....
3
LCD_string(TEST);

Das hat den hintergrund das ich das define auch an anderen stellen 
benutzen möchte wo keine ausgabe genutzt wird, also
1
 
2
#define TEST 5
3
4
if(zeit < 5)
5
{
6
...
7
}

Gibt es da eine möglichkeit? Bitte keine Lösungen bei denen, dass define 
mittels itoa, dtostrf, etc... umgewandelt werden muss.

von Mr. #define (Gast)


Lesenswert?

Soll natürlich
1
#define TEST 5
2
3
if(zeit < TEST)
4
{
5
...
6
}

lauten

von Random .. (thorstendb) Benutzerseite


Lesenswert?

genau so, wie du die definierte Konstante ausgeben würdest, also 
sprintf(str, "%i", var); oder itoa().

#define ist erst mal reines copy&paste des PräPro.

von Ralf (Gast)


Lesenswert?

> LCD_string(TEST);
Daran scheitert's, denn die Funktion erwartet offenbar einen String, und 
der ist üblicherweise mit 0x00 abgeschlossen.
Ergo brauchst du Konvertierungsroutinen, direkt oder indirekt.
Also entweder LCD_putchar(cnv2asc(TEST)); oder LCD_putvalue(TEST);

Ralf

von asyxdcvgh (Gast)


Lesenswert?

Es geht indirekt mittels stringnification operator (oder wie das Ding 
auch heissen mag).

http://codepad.org/T2wSpj8t

von Mr. #define (Gast)


Lesenswert?

Ja, sprintf will ich vermeiden, da es ja doch sehr viel Speicher 
benötigt.
Gibt es nicht irgendeine möglichkeit, dass ganze über ein 
Präprozessormakro zu bewerkstelligen?

von asyxdcvgh (Gast)


Lesenswert?

Mr. #define schrieb:
> Gibt es nicht irgendeine möglichkeit, dass ganze über ein
> Präprozessormakro zu bewerkstelligen?

s. codepad link

von Mr. #define (Gast)


Lesenswert?

Jop Codelink habe ich erst nach dem posten gesehen, danke funktioniert 
super!

von Jackfritt (Gast)


Lesenswert?

Interessant, danke für die Info.
http://gcc.gnu.org/onlinedocs/cpp/Stringification.html

Gruß, Jörg

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.