#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

Eine eigene Frage? Dieser Thread ist über 15 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.