アカウント名:
パスワード:
C++大好きな人が「そんなCみたいなコーディングして!」とぶーたれている図ならあちこちで見られますやね。けどC大好きな人の「そのC++的発想やめてほしい」みたいに言う図って想像できないんだ。
Cラブな人の誇りって、どのへんに宿るんだろう。
C++のシンボルのname manglingは実装依存でコンパイラのベンダーによってバラバラ。Windowsだとvtable絡みでMicrosoftが特許とってるらしくてC++ ABIをMSVC++互換にはできないっぽい。LinuxのC++ ABIはGNU libstdc++のそれに標準化してたと思うけど、そもそもlibstdc++自体がABI安定してないからなあ。ていうかscim-bridgeが作られたきっかけはABI問題だし、iBusがCで書かれている理由もそれを嫌ってるからだし。
まあOSのコアAPIはCで書くのが無難だよなあ。
LinuxのC++ ABIはGNU libstdc++のそれに標準化してたと思うけど、そもそもlibstdc++自体がABI安定してないからなあ。
ABIが何かを理解していますか?GCCのC++ ABIは何度か変更がありましたが、そのことですよね。
つーか、その2つはセットで考えるべきでしょ。
ABIと言うからにはしっかり区別すべき。ライブラリが規程するのはAPIであってABIではありません。
なんだ、ただの知ったか君か。C/C++のライブラリなんざ注意を払わずに変更を加えた日にゃ簡単にABIが壊れるよ。コンパイラだけの問題じゃない。
C/C++のライブラリなんざ注意を払わずに変更を加えた日にゃ簡単にABIが壊れるよ
では具体例にどうABIを壊すのかを例示してください。そのような変更は、普通APIの互換性を崩す変更と呼ぶと思いますが。
構造体のサイズやレイアウトを変えるとか。
それはAPIの変更であってABIとは関係ないです。あるAPIに含まれる構造体のレイアウトを変更したら、通常はAPIのバージョンを上げて非互換を明示しますが、そんな基本的なことも知らないのですか?
ABIとは、例えばIA-64 C++ ABI [codesourcery.com]で定義されているようなもっと基本的な部分での話です。
何でか知らんけど、おまいがABIを極めて限定的な範囲で捉えていることと、ソース互換とバイナリ互換の区別がつかないことだけはよくわかった。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
弘法筆を選ばず、アレゲはキーボードを選ぶ -- アレゲ研究家
逆なら見るけども (スコア:0)
C++大好きな人が
「そんなCみたいなコーディングして!」
とぶーたれている図ならあちこちで見られますやね。
けどC大好きな人の
「そのC++的発想やめてほしい」
みたいに言う図って想像できないんだ。
Cラブな人の誇りって、どのへんに宿るんだろう。
Re: (スコア:0)
C++のシンボルのname manglingは実装依存でコンパイラのベンダーによってバラバラ。Windowsだとvtable絡みでMicrosoftが特許とってるらしくてC++ ABIをMSVC++互換にはできないっぽい。LinuxのC++ ABIはGNU libstdc++のそれに標準化してたと思うけど、そもそもlibstdc++自体がABI安定してないからなあ。ていうかscim-bridgeが作られたきっかけはABI問題だし、iBusがCで書かれている理由もそれを嫌ってるからだし。
まあOSのコアAPIはCで書くのが無難だよなあ。
Re: (スコア:1)
ABIが何かを理解していますか?GCCのC++ ABIは何度か変更がありましたが、そのことですよね。
Re: (スコア:0)
つーか、その2つはセットで考えるべきでしょ。
Re: (スコア:1)
ABIと言うからにはしっかり区別すべき。ライブラリが規程するのはAPIであってABIではありません。
Re: (スコア:0)
なんだ、ただの知ったか君か。
C/C++のライブラリなんざ注意を払わずに変更を加えた日にゃ簡単にABIが壊れるよ。
コンパイラだけの問題じゃない。
Re: (スコア:1)
では具体例にどうABIを壊すのかを例示してください。
そのような変更は、普通APIの互換性を崩す変更と呼ぶと思いますが。
Re: (スコア:0)
構造体のサイズやレイアウトを変えるとか。
Re: (スコア:1)
それはAPIの変更であってABIとは関係ないです。あるAPIに含まれる構造体のレイアウトを変更したら、通常はAPIのバージョンを上げて非互換を明示しますが、そんな基本的なことも知らないのですか?
ABIとは、例えばIA-64 C++ ABI [codesourcery.com]で定義されているようなもっと基本的な部分での話です。
Re:逆なら見るけども (スコア:0)
何でか知らんけど、おまいがABIを極めて限定的な範囲で捉えていることと、ソース互換とバイナリ互換の区別がつかないことだけはよくわかった。