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
Uwe S. schrieb:> #define _CALL(a,b)_ T6963cPutStringXY_P(a, b, PSTR("Ti:"))
lol damit wär ihm auch nicht geholfen, dann ist a und b ja trotzdem
undefiniert
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
andy schrieb:> Aber wenn ich die defines in den Funktionsaufruf setze,gibts> Fehlermeldungen.
Deine Chancen auf Erfolg erhöhen sich, wenn du die Meldungen hier hin
kopierst. Und den gesamten Code.
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
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
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:
also der gcc sollte es schon schlucken
test.c
#define test 1,2
#include <stdio.h>
int main()
{
printf("bla%i%i",test);
};
wird ohne meckern kompiliert und gibt bla12 aus
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
Bei 'meiner' Version hast du doch die zwei Werte in ein Makro gepackt -
und den ganzen Funktionsaufruf dazu. Nur der Text wird an jeder Stelle
im Code angepasst. Genau das wolltest du doch, oder?!
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
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.