これの間にコンバーターが欲しい
#include <ololo.h>
#ifdef HAVE_QQQ
#include <qqq.h>
#endif
char* ololize(char* s) {
#ifdef HAVE_QQQ
return qqq(s);
#else
return ololo(s);
#endif
}
そして、このようなもの
(include_angular "ololo.h")
(p_ifdef "HAVE_QQQ"
(include_angular "qqq.h"))
(define_function "ololize" [(ptr char) "s"] (ptr char)
(p_ifdef "HAVE_QQQ"
(return (qqq s))
:else
(return (ololo s)))))
つまり、コンパイラの観点からではなく、プログラマの観点から、管理しやすいツリーとしてソース コードを表現します。
100% 正しく動作するとは思いませんが、ほとんどの既存のソース ファイルで動作するはずです。コードをツリーに「往復」できればボーナスポイントです。
そのための既存のツールやライブラリはありますか?