Forum: Mikrocontroller und Digitale Elektronik Zeiger in Integer umwandeln


von Siegfried S. (dieleena)


Lesenswert?

Hallo,
wenn ich einen Zeiger in ein Integer umwandeln, bekomme ich eine 
Fehlermeldung.
"Warning [2054] suspicious pointer conversion"

in der *.c
#pragma romdata eedata_scn=0xf00000
rom unsigned char eedata_TransferFehler[MaxTransferFehler];
#pragma romdata

//int x = 42;
int adr;
//
//  ---->>>>  Zeiger in Integer umwandeln
//int* ptr = (unsigned int*)(void*)&eedata_TransferFehler[0];
oder
int* ptr = &eedata_TransferFehler[0];
//int* ptr = &x;
adr = (int)ptr;

bei "int x = 42" in der *.c oder *.h kommt keine Warnmeldung.

Die berechnung ist in Ordnung.

Gruß Siegfried

von aha (Gast)


Lesenswert?

Nachschauen : Type cast

von Siegfried S. (dieleena)


Lesenswert?

Hallo,
mit cast habe ich es nicht hinbekommen.
Gruß Siegfried

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

schwer zu sagen, weil das offenbar kein Standard-C ist. Oder ist rom ein 
Makro? Wenn es ein Qualifier ist dann sollte es so gehen:
1
rom int * ptr = (rom int*) &eedata_TransferFehler[0];

von Henry (Gast)


Lesenswert?

Ist der Pointer vielleicht 32 Bit breit, int aber nur 16 Bit breit?

von Siegfried S. (dieleena)


Lesenswert?

Hallo,
Danke für die schnelle Info, funktioniert einwandfrei.
das ganze kommt davon, das ich folgende Zeilen

#pragma romdata eedata_scn=0xf00000
rom unsigned char eedata_TransferFehler[MaxTransferFehler];
#pragma romdata

bei einem PIC18F242 nicht in der *.h anlegen konnte, wobei bei einem 
PIC18F4680 funktioniert.
Man hat mir geschrieben, das das in der *.c sei soll.
Gruß Siegfried

guten Rutsch ins Jahr 2009

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.