Подтвердить что ты не робот

Есть ли способ скомпилировать C11-C89?

Одна из моих (встроенных) целей имеет только компилятор C89.

Я работаю над проектом (хобби), который нацелен на несколько устройств.

Есть ли способ компиляции (пересылки?) базы кода C11 в C89?

(В противном случае мне придется писать как 1989, буквально.)

4b9b3361

Ответ 1

Нет, я не думаю, что это возможно для всех C11. C11 имеет функции, которые просто не существуют на C89 или C99: _Generic, _Atomic, _Thread, _Alignof, четко определенные последовательности перед заказом, без имени struct и union членов... Это не иметь встречные части в старых версиях и было бы очень сложно подражать.

Для любой из этих функций вам придется полагаться на расширения вашего целевого компилятора, поэтому, возможно, возможно для некоторых функций для одного данного компилятора. Но было бы кошмаром написать такие инструменты, которые имели бы обычный C89 в качестве общей цели. Вам лучше реализовать компилятор C11 напрямую.

Ответ 2

Как пишет Carl Norum:

Какова ваша цель? Было бы трудно переносить clang/llvm?

Это, кажется, многообещающий подход.
Не нужно переносить вашу цель, достаточно порта для C89.

Итак, clang компилирует ваш код в llvm, а затем llvm в c89, а затем вы его получите.