error: incompatible types when initializing type 'REQ_ONE * {aka struct REQ_ONE *}' using type 'REQ_ONE {aka volatile struct REQ_ONE}'
#define FIND_T(a, type) (*((volatile type *)a))
Ich möchte den Inhalt von REQ_ONE
erhalten. Ursprünglich war ich mit nur:Fehler: Inkompatible Typen bei der Initialisierung Typ
REQ_ONE *reqReg = FIND(ADDRESS)
aber mein Code Analyzer beschwerte pointer to void not allowed
. Daher möchte ich den Typ der Struktur umwandeln, um dies zu umgehen. Ich habe viele verschiedene Strukturen so dass ich nur ein Makro verwenden möchten:
REQ_ONE *reqReg = FIND_W(ADDRESS, REQ_ONE);
und den Typ-Parameter übergeben ich Ehrerbietung wollen. Allerdings bekomme ich den obigen Kompilierungsfehler, bevor ich überhaupt sehe, ob mein Analyse-Tool zufrieden ist.
#define TEST_ADDR 0x00652000UL
#define ADDRESS 0x00000500UL
#define FIND(v) ((void *)TEST_ADDR + v)
#define FIND_T(a, type) (*((volatile type *)a))
#define FIND_W(val, dataType) FIND_T(FIND(val), dataType)
typedef struct testing_t {
union {
struct {
uint32_t avr_one : 4;
uint32_t avr_one : 4;
uint32_t avr_one : 4;
uint32_t avr_one : 2;
uint32_t bcr_one : 4;
uint32_t test_one : 4;
uint32_t reserved : 1;
uint32_t bcr_three : 2;
uint32_t reserved1 : 1;
uint32_t test_one : 3;
uint32_t avg : 2;
uint32_t reserved2 : 1;
};
uint32_t VALUE32;
};
} REQ_ONE;
Erscheint Code zu fehlen, die tatsächlich etwas tut – Steve
Im 'FIND_W' Erweiterung' 'dataType' sollte Baumuster zur sein. –
@Steve Ithe Zeile des Codes, der etwas tut, ist in der Frage – homeGrown