Я работаю с устаревшим встроенным кодом C, который определяет типы uint8_t, uint16_t
и uint32_t
в файле заголовка с использованием ключевого слова typedef
.
Для обсуждения, скажем, файл typedefs.h
содержит эти определения.
В мой новый исходный модуль C я включил stdint.h
. Я также включаю другие файлы заголовков, которые включают typedefs.h
где-то в иерархии. Как и ожидалось, компилятор жалуется на несколько определенных символов.
Я хотел бы изменить устаревший файл typedefs.h
так, чтобы он объявлял типы uint * _t
, только если stdint.h
не включен или лучше, если типы uint * _t
не определены.
Я понимаю, что #ifndef
не может использоваться с ] typedef
не является директивой препроцессора.
Итак, как мне сказать компилятору не определять uint * _t
, если они уже существуют (или если stdint.h
уже включен)?
Примечание: это было бы легко, если бы стандарт, определенный спецификацией C, включал определения защиты для файлов заголовков.
FWIW, я использую компилятор Green Hills, 4.24, для процессора ARM9.