Проверка существования stdint.h во время компиляции

Я работаю с устаревшим встроенным кодом 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.

7
задан Brad Werth 20 September 2012 в 23:41
поделиться