On Sat, February 4, 2006 8:37 pm, Serghei Amelian wrote:
> Are cineva idee daca exista vreo directiva de preprocesor la GCC care
> sa-mi indice daca sunt pe platforma big endian sau pe little endian?

Teoretic nu e treaba gcc-ului sa stie ce byte order ai pe system.
Aplicatia trebuie sa detecteze fie intr-un Makefile (manual) sau
un autoconf.
In situatia ta daca ai in mai multe locuri testul asta iti poti defini sigur
(cel mai simplu mod de detectie este (eventual la startup)

int a = 1234;

if (a == ntohl(a))
{
   /* BIG ENDIAN*/
}
else
{
   /* LITTLE */
}

Oricum in sitiatia ta cred ca toata functia se putea inlocui cu un apel
de ntohl()
Referitor la arhitectura (32, 64) 'int' e destul de portabil (4 octeti)
pe ambele. Insa daca vrei sa fii sigur ca citesti 4 octeti indiferent de
arhitectura foloseste int32/uint32 chiar cu riscul de avea eroare de
compilare pe cine stie ce sisteme exotice (macar stii de la compilare la
ce sa te astepti si nu ti-o furi la runtime)

 vls




_______________________________________________
RLUG mailing list
[email protected]
http://lists.lug.ro/mailman/listinfo/rlug

Raspunde prin e-mail lui