sprintf, char * __restrict__

23/05/2011 - 13:47 von Samier | Report spam
hello,

I'm using sprintf to convert an interger to a string.


snip
char s_year[6] ;

sprintf(&s_year, "%d", (s_date->tm_year + 1900)) ;



I compile it using gcc 4.4.3 (gcc -Wall -pedantic) and get the
following warnings:

snip
... passing argument 1 of ‘sprintf’ from incompatible pointer type
... note: expected ‘char * __restrict__’ but argument is of type char
*[6]
-

the complied program runs allright!

What do I have to do to remove those warnings and not declaring s_year
as a pointer?

Thanks in advance
Sake.
 

Lesen sie die antworten

#1 Rainer Weikusat
23/05/2011 - 14:51 | Warnen spam
Samier writes:
I'm using sprintf to convert an interger to a string.


snip
char s_year[6] ;

sprintf(&s_year, "%d", (s_date->tm_year + 1900)) ;



I compile it using gcc 4.4.3 (gcc -Wall -pedantic) and get the
following warnings:

snip
... passing argument 1 of ‘sprintf’ from incompatible pointer type
... note: expected ‘char * __restrict__’ but argument is of type char
*[6]
-



Ein Ausdruck mit Typ 'array of type' soll in einen Zeiger auf das
erste Feldelement konvertiert werden ausser er ist Operand von & oder
sizeof. Dh wenn Du das & weglaesst 'sieht' gcc den Typ, den er fuer
korrekt haelt, waehrend das & andernfalls bewirkt, das der Typ 'Zeiger
auf ein char-array der Laenge 6' ist was unsinnigerweise gcc moniert.

Es hat generell keinen Sinn & auf Felder oder Feldelemente anzuwenden:
Dabei handelt es sich lediglich um eine etwas komplizierter
Schreibweise fuer s_year (&s_year) oder s_year + x (&s_year[c]).

Ähnliche fragen