私の (組み込み) ターゲットの 1 つには、C89 コンパイラしかありません。
複数のデバイスを対象とする (趣味の) プロジェクトに取り組んでいます。
C11コードベースをC89にコンパイル(トランスパイル?)する方法はありますか?
(そうしないと、文字通り 1989 年のようにコーディングする必要があります。)
いいえ、C11 のすべてで可能だとは思いません。C11には、C89やC99 には存在しない機能_Generic
があります。_Atomic
_Thread
_Alignof
struct
union
これらの機能のいずれについても、ターゲット コンパイラの拡張機能に依存する必要があるため、特定のコンパイラの一部の機能についてはおそらく可能です。しかし、一般的なターゲットとしてプレーンな C89 を持つようなツールを作成するのは悪夢です。C11 コンパイラを直接実装する方がよいでしょう。
カール・ノーラムは次のようにコメントしています。
あなたのターゲットは何ですか?clang/llvm を移植するのは難しいでしょうか?
これは有望なアプローチのようです。
ターゲットを移植する必要はありません。C89 の移植で十分です。
したがって、clang はコードを llvm にコンパイルし、次に llvm を c89 にコンパイルしてから取得します。