私はカスタムLISPインタープリタを開発しています。 LISPのような関数を定義することはできませんが、すべての関数はCの関数にマッピングされます。それはC関数への可変引数LISP関数のマッピング - C
(substr 'input '1 '1)
、のような表現を見つけると、それは内部substr
関数を呼び出して結果を返すことを知っています。
今、基本的な書式設定をサポートし、出力をstdout
に書き込むmessage
関数を実装する予定です。何かのように、
(message "Hello, %s" name)
%s
は、変数name
の値に置き換えられます。
現在の計画では、フォーマットと引数をprintf
のような関数に直接渡します。そのようにして、printf
がサポートするすべての形式をサポートできます。しかし、問題にはさまざまな議論があります。 1つの方法は次のようなものになります
if(argcount == 1)
/* call printf with one arg */
else if(argcount == 2)
/* call printf with two arg */
....
これは機能しますが、これを実現するにはより良い方法があると思いますか?
ありがとう。私はあなたのコードを見ていきます。 –