snprintf()
-
Moinsen,
hab eine Frage zu sprintf():
static const char MSG[] = {"test-message"}; unsigned char array[40]; unsigned short perr = 12020; /* als bsp. */ unsigned char *ptr; ptr = &MSG[0]; (void)snprintf((char *)array, sizeof(array),"Ein Test: %d\n%s", perr, *ptr);
Bei meinem snprintf() bekomm ich momentan die Warnung "argument is incompatible with corresponding format string conversion" - wahrscheinlich sieht snprintf() bis jetzt noch nicht den string sondern nur ein char - aber wie kann ich das ändern?
Gruß
Michi
-
Einfach das * weglassen? Und warum castest du die Funktion? O_o
-
feigling schrieb:
Einfach das * weglassen? Und warum castest du die Funktion? O_o
danke! was genau meinst du mit "castern der Funktion"?
-
Wofür benutzt du (void) vor snprintf?
-
feigling schrieb:
Wofür benutzt du (void) vor snprintf?
manche compiler wollen das so sehen (codewarrior z.b.) sonst gibts warnings. der coder soll ausdrücklich bescheid geben, dass er am rückgabewert nicht interessiert ist.
-
Ja, ich weiß, aber das ist aber eher die Ausnahme. Ich schätze einfach mal, dass dies in diesem Fall unnötig ist und sowas verwirrt einen Anfänger eher, darum meine Frage.
-
;fricky schrieb:
manche compiler wollen das so sehen (codewarrior z.b.) sonst gibts warnings. der coder soll ausdrücklich bescheid geben, dass er am rückgabewert nicht interessiert ist.
Find ich genauso unnötig wie die Unterscheidung von Funktionen und Prozeduren (ohne Rückgabe) in manchen Sprachen...
-
_matze schrieb:
;fricky schrieb:
manche compiler wollen das so sehen (codewarrior z.b.) sonst gibts warnings. der coder soll ausdrücklich bescheid geben, dass er am rückgabewert nicht interessiert ist.
Find ich genauso unnötig wie die Unterscheidung von Funktionen und Prozeduren (ohne Rückgabe) in manchen Sprachen...
kommt drauf an. ich benutze regelmässig 'splint' und das meckert auch ignorierte return values an. gerade wenn 'ne funktion fehlercodes zurückgibt, macht man sich schon gedanken, ob es 'ne gute idee war, hier mal nicht darauf zu reagieren.
zu funktionen und prozeduren: 'ne funktion ist ja so'n zustandsloses ding, das in einem rutsch irgendwas berechnen, aus einem input einen output machen soll (selber input erzeugt immer denselben output und so), aber sonst keine externe wirkung haben soll. während eine prozedur ein 'unterprogramm' darstellt, also 'nen haufen code-schritte zusammenfasst, damit man sie nicht immer wieder hinschreiben muss, und die alles machen und ändern darf. also von der bedeutung her sind sie schon unterschiedlich.