2016-12-23 4 views
-2

ich eine Strukturdefinition in Datei platform.h:Typedef Struct Zeiger nicht erkannt

typedef struct { 
    VL53L0X_DevData_t Data; 
    uint8_t I2cDevAddr; 
    uint8_t comms_type; 
    uint16_t comms_speed_khz; 
    uint16_t devID; 
    I2C_HandleTypeDef * i2c_handle; 
} VL53L0X_Dev_t; 

Und einen typedef auf einen Zeiger wie dies in der gleichen Datei:

typedef VL53L0X_Dev_t* VL53L0X_DEV; 

In einer anderen Datei, eine Referenz zu VL53L0X_DEV ist mit error: unknown type name 'VL53L0X_DEV' fehlgeschlagen Ich habe platform.h in dieser anderen Datei enthalten. Was ist daran falsch?

EDIT

Ich bin fest mit diesem Code (eine Menge davon) von einem Lieferanten geliefert und daher gibt es nicht viel Spielraum für die mit dem Zeiger typedef oder zur Bereitstellung eines MCVE Beispiel tut weg . Hier ist das relevante Build-Protokoll. Es scheint die vl53l0x_platform.h Datei in Ordnung zu sein. Danke für Ihre Hilfe!

1> >>Building build/vl53l0x_platform.o 
1> arm-none-eabi-gcc -ffreestanding -mcpu=cortex-m4 -mthumb -mfloat-abi=soft -Og -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-move-loop-invariants -g3 -nostartfiles -I"conf" -I"inc" -IC:/Users/sohail/Documents/Cloud/STM32Cube_FW_F4_V1.7.0/Drivers/STM32F4xx_HAL_Driver/Inc -IC:/Users/sohail/Documents/Cloud/STM32Cube_FW_F4_V1.7.0/Drivers/CMSIS/Include -I"C:\Users\sohail\Documents\gcc-arm_launchpad_binaries\lib\gcc\arm-none-eabi\4.9.3\include" -I"C:\Users\sohail\Documents\gcc-arm_launchpad_binaries\arm-none-eabi\include\sys" -I"C:\Users\sohail\Documents\gcc-arm_launchpad_binaries\arm-none-eabi\include" -std=gnu11 -c -o build/vl53l0x_platform.o src/vl53l0x_platform.c 
1> In file included from inc/vl53l0x_api.h:33:0, 
1>     from inc/main.h:44, 
1>     from inc/vl53l0x_platform.h:34, 
1>     from src/vl53l0x_platform.c:37: 
1> inc/vl53l0x_api_strings.h:39:39: error: unknown type name 'VL53L0X_DEV' 
1> VL53L0X_Error VL53L0X_get_device_info(VL53L0X_DEV Dev, VL53L0X_DeviceInfo_t *pVL53L0X_DeviceInfo); 
1>          ^
+0

Vorverarbeiteten Code prüfen. –

+4

Sie sollten [MCVE] (http://stackoverflow.com/help/mcve) – LPs

+3

Ganz raten: einige der Include enthalten vor 'paltform.h' erfordert' VL53L0X_DEV' Typ? Wenn ja, muss "platform.h" oben auf den anderen Kopfzeilen enthalten sein. – LPs

Antwort

1

Von Kommentare:

Sie haben wahrscheinlich eine zirkuläre Abhängigkeiten auf dem Header.

Einige der enthaltenen enthalten vor platform.h erfordert VL53L0X_DEV typ? Wenn ja, muss platform.h oben auf den anderen Kopfzeilen enthalten sein. Wenn die vl53l0x_api.h in platform.h enthalten ist, müssen Sie die Struktur vor diesem Include definieren.