2015-03-26 2 views
0

Je travaille sur lpcxpresso (lpc1768). J'ai inclus un fichier .h et deux fichiers .c dans mon code déjà écrit (ces fichiers ont été créés en utilisant flex et bison). Je veux utiliser l'option "Newlib (semihost)" sous "réglages rapides". Quand je construis mon code, il montre quelques erreurs:erreur: types contradictoires pour int32_t

"c:\nxp\lpcxpresso_6.1.2_177\lpcxpresso\tools\bin../lib/gcc/arm-none-eabi/4.6.2/../../../../arm-none-eabi/include/newlib_inc/stdint.h:79:21: error: conflicting types for 'int32_t'"

"c:\nxp\lpcxpresso_6.1.2_177\lpcxpresso\tools\bin../lib/gcc/arm-none-eabi/4.6.2/../../../../arm-none-eabi/include/newlib_inc/stdint.h:80:23: error: conflicting types for 'uint32_t'"

Lorsque je passe à la bibliothèque RedLib alors ces erreurs ne se produisent pas, mais d'autres problèmes. Je veux utiliser Newlib.

Pourquoi ces erreurs se produisent-elles? Qu'est-ce que je dois faire?

+3

grep pour 'typedef * int32_t' dans vos fichiers et en-têtes –

+0

Ai-je besoin de définir le type dans les fichiers que je donne en entrée pour flex et bison après quoi les fichiers .c et .h sont générés? – user3843784

+0

Si grep n'est pas disponible, vous pouvez lire la sortie du préprocesseur pour voir (a) à quoi ressemblent les typedefs 'int32_t' (b) où se trouvent les typedefs. Après cela, vous devez exclure ce qui doit être abandonné. – harper

Répondre

1

Cette erreur est due à plusieurs définitions de int32_t et uint32_t dans différents fichiers d'en-tête. Vérifiez le journal de construction pour trouver toutes les informations relatives à l'endroit où cette définition/déclaration multiple est arrivée. Voyez si vous pouvez utiliser le fichier d'en-tête système pour ces définitions de type, et dans le cas où il y a du code supplémentaire dans votre en-tête, utilisez des macros conditionnelles pour désactiver la partie typedef. J'espère que cela t'aides.