2017-10-20 26 views
0

Je implémente LwIP sur STM32F7. Et j'ai un problème. Quand je inclus types conflictuels pour s32_t en code c pour STM32F7xx

#include "lwip.h" 

Je reçois cet avertissement: types contradictoires pour 's32_t' Il est dans le fichier cc.h:

typedef signed  long s32_t; 

est ici l'image avec le problème: https://imgur.com/a/wkERF

Quel est le problème, et comment puis-je résoudre ce problème?

+1

La meilleure solution consiste à # inclure ou et d'utiliser le type int32_t à partir de là. –

+0

's32_t' est probablement déjà défini dans l'un des fichiers d'en-tête que vous incluez. Essayez de supprimer 'typedef signé long s32_t;' et voyez s'il compile. –

+0

Et la définition dans les en-têtes est probablement que c'est un 'int' qui, bien que de la même taille, n'est pas compatible. –

Répondre

0

s32_t est probablement déjà défini dans l'un des fichiers d'en-tête que vous incluez. Essayez d'enlever typedef signed long s32_t; et les autres lignes similaires de cc.h.

Cette erreur peut être reproduite simplement avec les deux lignes suivantes.

typedef signed int s32_t; 
typedef signed long s32_t; 

Live demonstration here

recherche pour typedefs de s32_t dans lwip.h et cc.h, cela devrait vous donner des indices supplémentaires.

+0

Je recommande cette ligne et maintenant le programme est sans erreur: '// typedef unsigned char u8_t; // typedef signé char s8_t; // typedef unsigned short u16_t; // typedef signé court s16_t; // typedef unsigned long u32_t; // typedef signé long s32_t; ' – Jirka