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.
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.