9

s 式で C を記述し、コンパイル時マクロを使用したいと考えています。これを行うものを知っている人はいますか?s 式を標準 C に変換する必要があります。

4

5 に答える 5

2

How do you mean? Something along the lines of:

(c-expression 
  (int main ((int argc) ((array (pointer char)) argv)
    (block
      (printf "%d arguments\n" argc)
      (if (argc >= 1)
        (printf "The first arg is %s\n" (ref argv 1)))
      (return 0))))
=>
"int main (int argc, char *argv[])
{
  printf("%d arguments\n", argc);
  if (argc >= 1)
    printf(The first arg is %s\n", argv[1]);
  return 0;
}

If so, yes, it's definitely doable. However, it's not entirely trivial.

于 2010-01-14T15:00:51.340 に答える
2

おそらく、Common Lisp を C にコンパイルするECLのようなものが必要になるでしょう。

于 2010-01-14T23:23:07.097 に答える
1

平石佑のSCをご覧ください。彼の2005 年2007 年の International Lisp Conference の論文は、archive.org にアーカイブされています。

彼のソース リポジトリ、特にを参照してください。

私の知る限り、これは S-Expression スタイルのコーディング プラクティスをバニラの C プロジェクトに適用しようとする多くの試みの中で最も優れたものです。

于 2015-08-10T13:57:57.513 に答える