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
Gast
#1094512
Nachschauen : Type cast
Hallo, mit cast habe ich es nicht hinbekommen. Gruß Siegfried
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 | |
Gast
#1094534
Ist der Pointer vielleicht 32 Bit breit, int aber nur 16 Bit breit?
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
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.