1

GNU C を中間コードとして出力する言語のコンパイラを作成しています。(はい、IR を行うためのより良い方法があることは知っていますが、私は怠け者であり、自己ホスト型になるように書き直すつもりです)。

現在、引数なしで関数を作成すると、コンパイラは

bar foo(){/*Implementation here*/}

これは、望ましい動作と同じではありません:

bar foo(void){/*Implementation here*/}

ただし、GCC で前者を後者として処理するようにしたいと思います (そうでない場合は、コードで特別なケースを作成する必要があります)。

これを行うための GCC のフラグはありますか?

4

1 に答える 1

2

が提供するかなり膨大なオプションを検索しましたgccが、あなたが望むものに近づくものは何も見つかりませんでした.

ただし、C コードを生成する場合は、正しいコードを生成することが義務付けられていると思います。ボードは、「引数がゼロ」の関数と「引数の数が不定」の関数のgcc違いを十分に認識しています。したがって、私の提案は、弾丸を噛んで、その特殊なケースをコードに挿入することです。

適切に構造化されていれば、変更を 1 か所で行うだけで済みます :-)

于 2015-01-02T07:15:41.573 に答える