2017-10-04 2 views
1

Je reçois un incompatible types when assigning to type 'uint16_t {aka short unsigned int}' from type 'ble_uuid_t {aka struct <anonymous>} dans ce morceau de codePourquoi ai-je des types incompatibles lors de l'assignation à l'erreur 'uint16_t'?

ble_uuid_t ble_uuid; 

ble_uuid.uuid = m_adv_uuid[0]; 

où je l'ai défini m_adv_uuid comme

#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}; 

étant ble_uuid_t défini comme

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

Merci à l'avance

Répondre

5

Il y a en fait deux problèmes:

  1. vous initialisez tableau de structures, qui doit être fait comme ceci:

    ble_uuid_t m_adv_uuid[] = { { AMT_SERVICE_UUID, AMTS_CHAR_UUID } }; 
    
  2. puis d'accéder à struct au lieu de son membre uuid. Votre mission devrait ressembler à ceci:

    ble_uuid.uuid = m_adv_uuid[0].uuid; 
    

Ou, bien sûr, si vous ne voulez pas m_adv_uuid être un tableau de ble_uuid_t, il suffit de simplement supprimer [] dans la déclaration de m_adv_uuid et reste de votre le code fonctionnera:

ble_uuid_t m_adv_uuid = {AMT_SERVICE_UUID, AMTS_CHAR_UUID}; 
1

vous définissez un tableau de vos structures et essayez de l'initialiser. Mais vous ne transmettez des données que pour une structure.

Le compilateur pense que vous essayez d'initialiser 2 structures ble_uuid_t, avec des types incompatibles.

qui travaillerait pour 1 struct:

ble_uuid_t m_adv_uuid = {AMT_SERVICE_UUID, AMTS_CHAR_UUID}; 

et pour initialiser 2 struct, vous pouvez faire:

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