2017-10-04 2 views
1

Ich bin ein incompatible types when assigning to type 'uint16_t {aka short unsigned int}' from type 'ble_uuid_t {aka struct <anonymous>} in diesem Stück Code bekommenWarum bekomme ich eine inkompatible Typen bei der Zuweisung zum Typ 'Uint16_t' Fehler?

ble_uuid_t ble_uuid; 

ble_uuid.uuid = m_adv_uuid[0]; 

wo ich m_adv_uuid als

#define AMT_SERVICE_UUID    0x2001 
#define AMTS_CHAR_UUID    0x20 
#define AMT_RCV_BYTES_CNT_CHAR_UUID 0x2003 

ble_uuid_t m_adv_uuid[] = {AMT_SERVICE_UUID, AMTS_CHAR_UUID}; 

wird ble_uuid_t als

definiert definiert haben
typedef struct 
{ 
    uint16_t uuid; 
    uint8_t  type; 
} ble_uuid_t; 

Vielen Dank im Voraus

Antwort

5

Es gibt eigentlich zwei Probleme:

  1. Sie initialisieren Array von Strukturen, die so gemacht werden müssen:

    ble_uuid_t m_adv_uuid[] = { { AMT_SERVICE_UUID, AMTS_CHAR_UUID } }; 
    
  2. und dann greifen Sie auf Struktur anstelle von seinem Mitglied uuid. Ihre Aufgabe sollte wie folgt aussehen:

    ble_uuid.uuid = m_adv_uuid[0].uuid; 
    

Oder natürlich, wenn Sie ein Array sein von ble_uuid_t nicht m_adv_uuid wollen, ist es genug, nur [] in Erklärung m_adv_uuid und Rest entfernen Ihrer Code funktioniert:

ble_uuid_t m_adv_uuid = {AMT_SERVICE_UUID, AMTS_CHAR_UUID}; 
1

Sie definieren ein Array Ihrer Strukturen und versuchen es zu initialisieren. Aber du überträgst Daten nur für eine Struktur.

Der Compiler denkt, dass Sie versuchen, 2 ble_uuid_t Strukturen mit inkompatiblen Typen zu initialisieren.

Das ist für 1 struct funktionieren würde:

ble_uuid_t m_adv_uuid = {AMT_SERVICE_UUID, AMTS_CHAR_UUID}; 

und 2 structs initialisieren könnten Sie tun:

ble_uuid_t m_adv_uuid[] = {{AMT_SERVICE_UUID, AMTS_CHAR_UUID},{AMT_SERVICE_UUID, AMTS_CHAR_UUID}}; 
Verwandte Themen