000
21.08.2007, 21:13 Uhr
cfx
|
Hi ho, ich bin da kürzlich mal wieder auf was gestoßen:
C++: |
#include <stdio.h>
unsigned char test;
int main () { unsigned char test2;
printf ("Wert (0-255): "); scanf ("%d", (int *) &test);
printf ("Wert2 (0-255): "); scanf ("%d", (int *) &test2); // <- funzt nicht
return 0; }
|
Man erkennt vielleicht schon, was ich vorhabe. Ich dachte mir, ich schraub einfach mal diesen "immensen" Speicherbedarf von Int auf 1 Byte runter. Tja, ich weiß zwar nicht, ob man so wild casten darf, aber bei der globalen Deklaration funktioniert's, bloß bei der lokalen krieg ich immer einen Speicherzugriffsfehler ... und da kommt ihr ins Spiel !
Aber mal angenommen, dieser "verrückte" Cast geht wirklich nicht, könntet ihr mir dann sagen, wie ich sonst eine Variable mit einem Speicherbedarf von einem Byte verwende ? Ein Bitfeld geht nicht, da er sich die Speicheradresse nicht merkt.
Ich verwende übrigens den gcc 4.1.2
Freue mich auf Antworten ! Gruß cfx |