cfrontコマンドは、UNIX標準装備?

[戻る]
アメーバ 2005/09/25(日) 04:28:15
cfrontコマンド(C++ → C トランスレータ)は、多くのUNIX(SystemX、BSD、Linux、etc)
に標準装備されている物なのでしょうか?それともオプション装備でしょうか?

どうぞ宜しくお願い致します。

tetrapod 2005/09/26(月) 08:05:32
多くの商用 UNIX では C コンパイラ自体がオプションです。
(Irix や HPUX などではそう)
ましてや cfront など標準では入っていないと考えていいです。

そもそも現代 C++ コンパイラは cfront で実装できるレベルではないし実用度低。

επιστημη [E-Mail] 2005/09/26(月) 10:56:19
> そもそも現代 C++ コンパイラは cfront で実装できるレベルではないし実用度低。

え? …そ、そぉなの?

tetrapod 2005/09/26(月) 11:36:53
うーん、そうかな?どうなんだろ。
native c++ コンパイラでなくわざわざ cfront を選ぶってことは
(ちょっと古い) C コンパイラと linker だけあって、それを使いたいってことだろう。

JIS X 3010:2003 5.2.4.1 翻訳限界
外部識別子において意味がある先頭の文字数 (31)
ISO/IEC 14882:1998 Annex B Implementation Quantities
Number of initial characters in an external identifier [1024]

ってあるから、たぶん cfront では
std::vector<std::basic_string<wchar_t, std::char_traits<wchar_t> > 
>::const_reverse_iterator
とかのマングル名をまともに扱えるとは思えない。
# こーいう引数が複数個ある関数とかだとリンカの気が狂いそう。

C コンパイラがあるなら GNU binutils+GNU cc のほうが良いかもしれない。

επιστημη [E-Mail] 2005/09/26(月) 12:06:51
いろんなメーカにfront-endを提供しているベンダがあるんす。
EDG:Edison Design Group http://www.edg.com/ とか。

http://www.edg.com/resellers.html
↑EDGのfront-end使ってるとこは結構あるポ。

> native c++ コンパイラでなくわざわざ cfront を選ぶってことは
> (ちょっと古い) C コンパイラと linker だけあって、それを使いたいってことだろう。

「Cコンパイラは自前でこしらえたけどC++は勘弁ぷりぃづ」
なベンダなら、cfrontって解はありますぜ。

tetrapod 2005/09/26(月) 13:17:19
おお、なんかいいこと教えてもらえた(はぁと)
組み込み系だと C はあっても C++ がないチップって結構あるので、そーいうときにいい感じ
です。
# 実際問題として、現状使っているソースコードを他コンパイラで使うとは思えんが...

パフォーマンス/デバッガの問題で native C++ しか眼中になかったです。
今使ってる ICE は hoge_t::staticmember で watch かけるとかできるので。
これを _staticmember__6hoge_t で watch っつーのは効率上がりませんし。
でも、無いよりは無限にマシですしね。

http://www.tietew.jp/cppll_novice/archive/862

アメーバ 2005/09/26(月) 13:54:05
[[解決]]
お二人とも貴重な情報、どうも有難うございます!cfrontはオプションなんですね。

>多くの商用 UNIX では C コンパイラ自体がオプション
初耳です。ccは標準装備で、lsと同じレベルだと思ってました。今まで使ったUNIXが全部
ccを使えた為です。

>(ちょっと古い)C コンパイラと linker だけあって、それを使いたいってことだろう
いいえ、単に知識として知りたくて質問致しました。又、cfrontを使うと「未知のC++の
からくりを垣間見るのに役立つかな?」と思った為です。

>組み込み系だと C はあっても C++ がないチップって結構あるので、そーいうときにい
い
なるほど〜。でもその場合、組み込みのターゲットに作った実行コードが収まるのかな?
と思いました。Cに変換時のコード量が、莫大なんじゃないかと推したからです。
そもそもC++を使わせない組み込み環境は、少ない資源に実行コードを収める必要があっ
た故にCに限定したのかな?とも思えました。

επιστημη [E-Mail] 2005/09/26(月) 14:59:49
> cfrontはオプションなんですね。

いや、オブションですらないかも。
C++コンパイラが(Cを経由せず)いきなりnative-code吐くタイプの場合、
「くれ」って言っても「ない」って言われるのがオチ。

> cfrontを使うと「未知のC++のからくりを垣間見るのに役立つかな?」と思った為です。

はい、すっげー役立ちます。
cfrontの吐いたC-codeなんて人様の読むコードじゃないけど。
# 読めるもんなら読んでみやがれ、なコードが出てきます (^^

古いスレッドには追加発言できません。