>796 Comeauが使用しているEDG http://www.edg.com/cpp.html が、C++から中間言語 The front end translates source programs into a high-level, tree-structured, in-memory intermediate language. へのtranslateを行なうってだけで、ComeauがC++ to Cを行なうことは なかったように思われ。795は情報へのポインタをください。
Comeau C++ 4.3.0 is a full and true compiler that performs full syntax checking, full semantic checking, full error checking and all other compiler duties. Input C++ code is translated into internal compiler trees and symbol tables looking nothing like C++ or C. As well, it generates an internal proprietary intermediate form. But instead of using a proprietary back end code generator, Comeau C++ 4.3.0 generates C code as its output. (略)
例えば int x ; x = 2; result = oneHalf * x; この場合xは変数だけど暗黙の変換で作られる一時オブジェクトは const Rational temp(x)てなかんじになり result = oneHalf.operator*(temp); というふうになる。tempはconstだからoperator*の定義で引数はconstへの参照にしないとコンパイルできない。
Compiling C programs `n.o' is made automatically from `n.c' with a command of the form `$(CC) -c $(CPPFLAGS) $(CFLAGS)'.
Compiling C++ programs `n.o' is made automatically from `n.cc' or `n.C' with a command of the form `$(CXX) -c $(CPPFLAGS) $(CXXFLAGS)'. We encourage you to use the suffix `.cc' for C++ source files instead of `.C'.
GNU 厨な漏れは盲目的に *.cc を使ってます。 んでその勢いで *.hh をヘッダファイル用に使ってるんだけど、
>>911 むむ、それもトリッキーですな。 しかしやりたいことはちと違って、 ヘッダは書き換えてもいいんだけどライブラリの version up について行くのが面倒だからなるべく手をいれたくない。 って、感じです。 あと、classの new/delete operatorじゃ、 new char[m_size]とかにも対応できないし。
結局約100個の class宣言に : public MemManager とかいれて primitive type の new[]、delete[]を手で置き換えてます。 やれやれ。 # M-x tags-searchえらい
問い合わせた結果をメモっとこう。 The Cfront 3.0.3 is a translator that converts C++ code to C. However, it is an old technology that pre-dates Linux. The code that we furnish is in source with several reference binaries. This is a "dead" product, that is, we do not provide any support. We provide it primarily for those who have used it in the past and wish to port it to a newer platform, or for those interested in the computer science aspects of the original code that Stroustrup wrote.