C言語なら俺に聞け 162
あえて使う人もあんまりいないだろうけど、メンテナンスが止まってる(32bit 化、64bit 化されない)ようなソフトを使いたいってことはそれなりにあることじゃないの。
メーカーがつぶれて消えたりするのもよくあることだしな。 アプリは32bitだがインストーラが16bitなのが結構あるらしい もしもそんなのがあったら、メチャクチャ話題になってると思うよ 知り合いにエミュレータ入れたりして凄く苦労してロータス123を動かして業務で使っている人が居る。 使うのに手間はあるとはいえエミュレータが成熟してしまったので
かなり古いソフトウェアを動かしたいならそっちでやれと言えてしまうようになったとも言える。
Windows の互換性維持システムも結局はエミュレータをサブシステムとして
組み込んでるようなもんだしな。 >>697
ファーレントゥーガとかそのパターンだね プリプロセッサでモジュール作れるようになるとC++使わなくてもCで十分だな
もっと早めにマスターするべきだった CでCOMやれって言われても困るし
逆にC++のがマシってのはその程度か cでもできるってのと、c++使ったほうが楽ってのでは全然意味違う
チームで混乱を招くという理由以外でのc++ディスりは、大抵理解不足によるアレルギーから来るヒスのことが多い
まあ、そういうヒス起こす人が多いからチームでは使用禁止とかになっちゃうわけだから、り繋がってはいるんだけど >>708
なわけ無いだろ
我慢ができないのはただのガキだぞ >>711
そうやって我慢できずに突っかかってきてるのもどうかと思うけどな… linuxカーネル縛りと趣味以外でc言語使うってどういうプロジェクト?
実際仕事でそういう人いる?
組み込みでも今時c++使えるだろ メモリ構成が非常に小さいシステムの場合Cじゃない?
8bitのPICとか こういうの考えたんだけどどうだろう?
実用性無いだろうか
#include <stdio.h>
typedef void (*exception_handler)(void);
void register_exception_handler(exception_handler handler)
{
handler();
}
void exception_occurred()
{
printf("例外が発生しました。\n");
}
void may_throw_exception(int condition)
{
if (condition) {
register_exception_handler(exception_occurred);
}
}
int main()
{
may_throw_exception(1);
return 0;
} >>716
例外でもなくでもなくて草
Cで例外起こしたいならsetjmp/longjmpでやると決まってる >>716
「こういうの」とは何であるか説明が必要。
提示されたコードは関数 exception_occurred の呼び出しを回りくどくやっているだけで、
途中のメカニズムに意味がない。
(このコードでの使い方の範囲では。)
言葉で説明しづらいならこれが有用になるような使い方の例を示して欲しい。 >>722
C の言語仕様の範囲内でやる方法は setjmp/longjmp のみ。
setjmp/longjmp を自分で書きたいってことなら
アセンブラ (またはインラインアセンブラや intrinsic 関数) を使って
スタックポインタ操作したりレジスタの待避・復旧などをやる必要があるが……。
モダンな処理系だと最適化だのなんだのの都合でスタックフレームを省略したりだとかもあるので
それらと協調しないとまともに動作しない。
たとえば gcc だと setjmp/longjmp の実体は
組み込み関数の __builtin_setjmp/__builtin_longjmp として提供されてる。
処理系自体の機能として持たないとちゃんと動作させられんのだ……。 >>713
九州大学の人工衛星・イザナミ/イザナギは、mruby だから、C 言語
ベンチャーで上場したらしい Windows処理系の場合SEHがあるからsetjmp/longjmpをわざわざ使う事ないよ
というか外部ライブラリ等から例外を受ける場合SEH必須だよ