ошибка: конфликтующие типы для int32_t

Я работаю над lpcxpresso (lpc1768). Я включил файл .h и два файла .c в свой уже написанный код (эти файлы были созданы с использованием flex и bison). Я хочу использовать опцию «Newlib (semihost)» в разделе «Быстрые настройки». Когда я создаю свой код, он показывает некоторые ошибки:

"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: ошибка: конфликтующие типы для '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: ошибка: конфликтующие типы для «uint32_t»

Когда я переключаюсь на библиотеку Redlib, то этих ошибок не возникает, но возникают другие проблемы. Я хочу использовать Newlib.

Почему возникают эти ошибки? Что мне нужно сделать?


person user3843784    schedule 26.03.2015    source источник
comment
grep для typedef * int32_t в ваши файлы и заголовки   -  person Mohit Jain    schedule 26.03.2015
comment
Нужно ли мне определять тип файлов, которые я даю в качестве входных данных для flex и bison, после чего генерируются файлы .c и .h?   -  person user3843784    schedule 26.03.2015
comment
Если grep под рукой нет, вы можете прочитать вывод препроцессора, чтобы увидеть (а) как выглядят определения типов int32_t (б) где расположены определения типов. После этого вы должны исключить то, что должно быть отброшено.   -  person harper    schedule 26.03.2015
comment
Я не определял эти вещи самостоятельно. Пока я переключаю библиотеку, этой проблемы не возникает. Эта проблема связана с библиотекой. В коде, который я создал, нет ошибок, поскольку я заставил его работать независимо там, где он работает правильно.   -  person user3843784    schedule 26.03.2015


Ответы (1)


Эта ошибка возникает из-за нескольких определений int32_t и uint32_t в разных файлах заголовков. Проверьте журнал сборки, чтобы найти любую информацию, связанную с тем, где произошло это множественное определение/объявление. Посмотрите, можете ли вы использовать системный заголовочный файл для этих определений типов, и, если в вашем заголовке есть дополнительный код, используйте условные макросы, чтобы отключить часть typedef. Надеюсь это поможет.

person Oldman    schedule 28.07.2015