0
我正在使用恩智浦LPCopen C庫。我使用Eclipse Mars和MinGW/gcc。我在Eclipse中遇到一個問題,即一個特定的typedef是生產一個錯誤:C編譯器問題,多路徑定義/鏈接
"conflicting types for 'LPC_GPIO_T'"
基於我使用(並用CTRL + H搜索確認)文件,LPC_GPIO_T
只被3使用地方:
1)在gpio_002.h,其中該結構被定義
typedef struct { /* GPIO_PORT Structure */
__IO uint32_t DIR; /* Offset 0x0000: GPIO Port Direction control register */
uint32_t RESERVED0[3];
__IO uint32_t MASK; /* Offset 0x0010: GPIO Mask register */
__IO uint32_t PIN; /* Offset 0x0014: Pin value register using FIOMASK */
__IO uint32_t SET; /* Offset 0x0018: Output Set register using FIOMASK */
__O uint32_t CLR; /* Offset 0x001C: Output Clear register using FIOMASK */
} IP_GPIO_002_T;
2)在chip_lpc175x_6x.h,其中所述的typedef正在聲明
typedef IP_GPIO_002_T LPC_GPIO_T;
3)在gpio_17xx_40xx.h,它是一個參數的函數
STATIC INLINE void Chip_GPIO_WritePortBit(LPC_GPIO_T *pGPIO, uint32_t port, uint8_t bit, bool setting) {
IP_GPIO_WritePortBit((LPC_GPIO_T *) (LPC_GPIO + port), bit, setting);
}
我不知道這個問題是解決它到底是什麼。如果能提供幫助,我很高興發佈任何相關文件。
用'-E'標誌構建源文件以獲得預處理輸出。然後檢查輸出以查看確切的定義。 – kaylum
另外,編譯器不會告訴你衝突類型在哪裏?它應該有一個消息,如':::注意:'LPC_GPIO_T'之前的聲明在這裏' –
kaylum
您有誤解。您的要點'2'只是定義了另一個typedef,而不是在點'3'中聲明結構 – user3629249