#define mit 2 Werten

Gast #2040200
Lesenswert?

Hallo,wie muss meine #define anweisung aussehen damit ich diesen 
Funktionsaufruf bewerkstelligen kann.

 T6963cPutStringXY_P(0,2, PSTR("Ti:"));

Im define sollen die Werte 0,2 sein.

Wenn ich es so probiere #define wert (0,2)
und dann die Funktion aufrufe mit

 T6963cPutStringXY_P(wert, PSTR("Ti:"));
bekomme ich Fehlermeldungen.
Hab schon einiges probiert,bekomme es aber nicht hin.
Wäre nett,wenn mir jemand helfen könnte.

gruss
andy
Gast #2040241
Lesenswert?

Hallo danke für die antworten.Also es gibt 6 verschiedene Kombinationen 
der 2 Zahlen z.b 0,2  15,4  usw.
Damit ich sie leichter benutzen kann ohne sie zu verwechseln
wollte ich 6 #defines machen.
Aber wenn ich die defines in den Funktionsaufruf setze,gibts 
Fehlermeldungen.

gruss
andy
Gast #2040253
Lesenswert?

Uwe S. schrieb:
> warum wird man hier eigentlich beleidigt ?
> und diskutiert nicht fachlich ?

ja tut mir leid.
aber du musst einsehen, die funktion so wie sie ist umzubenennen hilft 
auch nicht weiter

so schon eher

#define CALL T6963cPutStringXY_P(0, 2, PSTR("Ti:"))
//#define CALL T6963cPutStringXY_P(5, 7, PSTR("Ti:")) //wahlweise 
auszukommentieren
Gast #2040274
Lesenswert?

Also wenn ich es so mache
#define wert 0,2

 T6963cPutStringXY_P(wert, PSTR("Ti:"));

bekomme ic folgende Fehlermeldungen


../Display_anzeige.c:8:42: error: macro "T6963cPutStringXY_P" requires 3 
arguments, but only 2 given
../Display_anzeige.c:8: error: 'T6963cPutStringXY_P' undeclared (first 
use in this function)
../Display_anzeige.c:8: error: (Each undeclared identifier is reported 
only once
../Display_anzeige.c:8: error: for each function it appears in.)

Wenn ich anstelle von wert 0,2 in den Funktionsaufruf schreibe klappt 
alles.

gruss

abdy
Persönliche Seite #2040289
Lesenswert?

andy schrieb:
> ../Display_anzeige.c:8:42: error: macro "T6963cPutStringXY_P" requires 3
> arguments, but only 2 given
Tja, das ist ein Makro, und keine Funktion... Offenbar wird 
T6963cPutStringXY zuerst expanded, und danach erst das 'wert', aber 
ersteres geht schon schief, weil halt 3 Argumente gefordert sind.
Mach's doch lieber so:
1
#define myT6963cPutStringXY_P(x) T6963cPutStringXY_P(0, 2, (x))
2
// zu verwenden dann so:
3
myT6963cPutStringXY_P(PSTR("Ti:"));
Gast #2040325
Lesenswert?

Hallo in der tat handelt es sich um ein makro.Bin leider noch nicht so 
weit.Ich dachte das das beim aufruf genau wie eine Funktion gehandhabt 
wird.
Niklas,wenn ich das richtig sehe,kann ich bei deinem Beispiel bei jedem 
aufruf den Text ändern,den ich dann übergebe.
Ich möchte aber die 2 Argumente durch ein define ersetzen.

gruss
andy
#2040342
Lesenswert?

andy schrieb:
> ../Display_anzeige.c:8:42: error: macro "T6963cPutStringXY_P" requires 3
> arguments, but only 2 given

Das läßt sich leicht über ein Zwischenmacro lösen.

Vorher müßte man aber die genaue Definition von T6963cPutStringXY_P 
wissen.

Bei Fragen ist es immer sinnvoll, alles zu definieren, was man 
verwendet, keiner kann hellsehen.


Peter
#2040427
Lesenswert?

andy schrieb:
> Hallo,danke für die antworten.Das mit den 2 Makros geht natürlich auch.
> Wäre nur schön gewesen wenns mit einem gegangen wäre.

Es geht auch mit einem.
Aber du musst eben einen Zwischenschritt einlegen.

Makros sind nun einmal einfach nur Textersetzungen. Und da kommt es dann 
eben auf die Reihenfolge der Ersetzungen an.

Allerdings wäre IMHO eine inline-Funktion hier die wesentlich bessere 
Lösung als ein Makro.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren