Ich habe mich nach längerer Pause mal wieder ent6schlossen was zu programmieren. Das Speichern einer Configuration möchte über g_bt_data machen: static char g_bt_data[27] = {0}; const char *BT_SSID[20] = &g_bt_data[0]; uint32_t *BT_PIN = &g_bt_data[20]; //0 uint32_t *BT_Baud = &g_bt_data[23]; beim Compilieren bekomme ich folgende Warnungen: error: invalid initializer const char *BT_SSID[20] = &g_bt_data[0]; warning: initialization from incompatible pointer type [-Wincompatible-pointer-types] uint32_t *BT_PIN = &g_bt_data[20]; //0 ^ warning: initialization from incompatible pointer type [-Wincompatible-pointer-types] uint32_t *BT_Baud = &g_bt_data[23]; kann mir jemand auf die Sprünge helfen ?
Du weist einem uint32_t* einen static char* zu und der Compiler warnt, dass diese beiden Pointer von unterschiedlichem Typ sind. Um die Warnung zu eliminieren musst du einen expliziten Type-Cast durchführen. In jedem Fall musst du aber auf korrektes Alignment von deinem uint32_t in deinem static char[] achten, weil es sonst bei der Dereferenzierung des Pointers zum Crash kommt. PS: Es muss natürlich nicht nur der uint32_t innerhalb des char[] aligned sein, sondern natürlich das char[] selbst ebenfalls, damit es sicher passt. Kurzum: Ein uint32_t muss immer auf vier Bytes aligned sein.
:
Bearbeitet durch User
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.