[LUGAr-gral] Re: Que pasa con el sizeof() ???

Nahuel Greco ngreco en softhome.net
Dom Ene 21 22:59:16 CST 2001


On Sun, 21 Jan 2001 11:48:02 -0600
Miguel Cárdenas <mcmail_y2k en yahoo.com> wrote:

> tambien... lo pueden encontrarn en "Variable Attributes"... Por cierto,
alguien sabe
> si este es soportado unicamente en GCC o es estandar del lenguaje C?
> 
> Como sea thanx!!! =)
> 

No es estandard del lenguaje C, te aconsejaria que sigas probando en
pasarle
opciones command line al compilador.

Por otra parte, estas haciendo algo mal, cuando vas a mandar una
estructura
de datos por red, no tenes que directamente copiar la estructura con un
memcpy o algo asi, (para esto vos queres el sizeof) y mandarla, ya que en
una version posterior de tu programa, la estructura en memoria podria
cambiar, agregarle mas campos, etc, no asi el protocolo!!!, y mas important
aun, si seguis mandandole por red la estructura asi como esta en memoria, vas a
tener quilombos cuando portas tu programa a maquinas que tienen un size de los
tipos diferentes (ej, una maquina 64bits tiene un int de 64bits), algo que no 
es tan comun, lo que si es comun que lo portes a una maquina que tenga diferente
byte order (little endian o big endian), lo que tenes que hacer para dejar tu
codigo portable y "lindo" (the right way) es:

1- Definir el protocolo (aca ya lo tenes definido, es el del icq client)
2- Cuando vas a armar el paquete para enviar, agarras tu struct y vas
campo por campo metiendo los valores tal como especifica el protocolo adentro
del paquete.






---------------------------------
          Nahuel Greco
   http://www.codelarvs.com.ar
  Web Development - Open Source
   Game programming - Research
---------------------------------
---------------------------------------------------------
para salir de la lista, enviar un mensaje con las palabras
"unsubscribe ayuda" en el cuerpo a majordomo en linux.org.mx



Más información sobre la lista de distribución Ayuda