18

私の (組み込み) ターゲットの 1 つには、C89 コンパイラしかありません。

複数のデバイスを対象とする (趣味の) プロジェクトに取り組んでいます。

C11コードベースをC89にコンパイル(トランスパイル?)する方法はありますか?

(そうしないと、文字通り 1989 年のようにコーディングする必要があります。)

4

2 に答える 2

9

いいえ、C11 のすべてで可能だとは思いません。C11には、C89やC99 には存在しない機能_Genericがあります。_Atomic_Thread_Alignofstructunion

これらの機能のいずれについても、ターゲット コンパイラの拡張機能に依存する必要があるため、特定のコンパイラの一部の機能についてはおそらく可能です。しかし、一般的なターゲットとしてプレーンな C89 を持つようなツールを作成するのは悪夢です。C11 コンパイラを直接実装する方がよいでしょう。

于 2013-10-01T20:10:18.803 に答える
3

カール・ノーラムは次のようにコメントしています。

あなたのターゲットは何ですか?clang/llvm を移植するのは難しいでしょうか?

これは有望なアプローチのようです。
ターゲットを移植する必要はありません。C89 の移植で十分です。

したがって、clang はコードを llvm にコンパイルし、次に llvm を c89 にコンパイルしてから取得します。

于 2013-10-02T07:44:41.287 に答える