Re: bytegroesse, was endianess/Re: audio-cd

From: Bernd Walter <ticso(at)cicely8.cicely.de>
Date: Sat, 23 Mar 2002 01:45:34 +0100

On Sat, Mar 23, 2002 at 12:30:12AM +0100, clemensF wrote:
> > Christian Weisgerber:
>
> > char *p;
> > long x;
> > ...
> > read(fd, p, size);
> > ...
> > /* read 32-bit value */
> > x = *(long *)p;
> > ...
>
> das beispiel nimmt darueber hinaus auch an, variablen wuerden in
> textreihenfolge (oder genau andersrum) alloziert. das kann schon mit einem
> "-O" in den CFLAGS danebengehen. ich hab das beispiel aber nicht ganz
> verstanden. muessten p und x nicht in einem union sein, um ueberhaupt
> sowas machen zu koennen?

Nein - lies das Beispiel nochmal.

> > Ich habe auch schon solche lustigen Dinge gesehen, wie ein Versuch
> > portabel die Endianness zur Laufzeit zu bestimmen:
> >
> > ...
> > char endian[] = { 0, 0, 0, 1 };
> > int i;
> > ...
> > i = *(int *)endian;
> > if (i == 1)
> > ...
>
> man kann doch sowas aber machen, oder? wie macht man das richtig?

Zur Compilezeit - in einem binary sind genug Abhängigkeiten auf
die Byteorder als das es später mit einer anderen umgehen könnte.
So ein Programm gehört bestenfalls in ein configure Script.

-- 
B.Walter              COSMO-Project         http://www.cosmo-project.de
ticso(at)cicely.de         Usergroup           info(at)cosmo-project.de
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Sat 23 Mar 2002 - 01:50:30 CET

search this site