hPrintf("<table width='100%'><tr><td align='left'>");
dove hPrintf e' in realta' una chiamata vprintf. Il fatto e' che sul
loro server il layout della pagina e' corretto, qui da me e' una ciofeca
perche' il simbolo % viene tralasciato assieme al successivo apice... ne
consegue che tutto quello che segue e' incluso del valore "width" della
tabella...
Ho modificato la chiamata in
hPrintf("<table width=\"100%%\"><tr><td align='left'>");
e tutto funziona.
Ora, visto che a Santa Cruz e a Milano stiamo usando la stessa versione
di codice, visto che loro usano Linux e noi FreeBSD, e' possibile che i
due OS abbiano vprintf implementata in maniera fondalmentalmente
diversa?
Ciao
d
Se non ricordo male lo standard dice che usare un indicatore di formato
non valido (come %' ) genera un comportamento indefinito, quindi ogni
compilatore decide cosa fare. Lasciare la stringa come a Santa Cruz o
eliminarla come accade a Milano sono entrambe scelte ammissibili.
Mi aspetterei come minimo un warning, comunque.
> Ho modificato la chiamata in
> hPrintf("<table width=\"100%%\"><tr><td align='left'>");
> e tutto funziona.
Perche' ora non c'e' piu' l'undefined behaviour. Secondo me dovrebbero
correggere il codice nello stesso modo anche a Santa Cruz.
> Ora, visto che a Santa Cruz e a Milano stiamo usando la stessa versione
> di codice, visto che loro usano Linux e noi FreeBSD, e' possibile che i
> due OS abbiano vprintf implementata in maniera fondalmentalmente
> diversa?
Piu' che di OS diversi parlerei di compilatori diversi (come versione
se usate tutti e due gcc) o dai flag usati per la compilazione (usate
gli stessi makefile?).
R.D.
Remo D. <rd> wrote:
>
> > Ho modificato la chiamata in
> > hPrintf("<table width=\"100%%\"><tr><td align='left'>");
> > e tutto funziona.
> Perche' ora non c'e' piu' l'undefined behaviour. Secondo me dovrebbero
> correggere il codice nello stesso modo anche a Santa Cruz.
>
Infatti... gli ho scritto stamattina, mi aspetto una risposta entro
domani (dannato fuso orario)
> > Ora, visto che a Santa Cruz e a Milano stiamo usando la stessa versione
> > di codice, visto che loro usano Linux e noi FreeBSD, e' possibile che i
> > due OS abbiano vprintf implementata in maniera fondalmentalmente
> > diversa?
>
> Piu' che di OS diversi parlerei di compilatori diversi (come versione
> se usate tutti e due gcc) o dai flag usati per la compilazione (usate
> gli stessi makefile?).
>
Il makefile e' lo stesso. Qui uso gcc 4.2.1, in California non so... Cmq
ancora grazie della risposta.
d
> Se non ricordo male lo standard dice che usare un indicatore di formato
> non valido (come %' ) genera un comportamento indefinito, quindi ogni
> compilatore decide cosa fare.
Sapresti dove trovare informazioni su questo? Grazie
d
Lo standard ISO vero e proprio è a pagamento, ma credo sia utle solo a
chi deve scrivere un compilatore C.
Le versioni DRAFT, invece sono disponibili su Internet. Io in genere uso
questa che è datata Settembre 2007:
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf
Quello di cui stavamo parlando lo trovi al punto 9 del paragrafo 7.19.6.1
Remo.D