X



C言語なら俺に聞け 162
0001デフォルトの名無しさん (ワッチョイ 2389-FUJr)
垢版 |
2023/10/30(月) 17:13:00.82ID:hHEGE8Ol0
!extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください)
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/

C17
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4713.pdf

C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf

C23 最新ドラフト
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3047.pdf

C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html

C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/

JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/

※前スレ
C言語なら俺に聞け 161
https://mevius.5ch.net/test/read.cgi/tech/1682053520/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
0695デフォルトの名無しさん (ワッチョイ 8732-Q9m/)
垢版 |
2024/04/29(月) 17:53:08.72ID:Mi5d5RVO0
あえて使う人もあんまりいないだろうけど、メンテナンスが止まってる(32bit 化、64bit 化されない)ようなソフトを使いたいってことはそれなりにあることじゃないの。
メーカーがつぶれて消えたりするのもよくあることだしな。
0696名無し兎と鰻の大乱闘 (ワッチョイ dffd-02Vv)
垢版 |
2024/04/29(月) 19:42:16.62ID:Yc7GJpMD0
そもそもしーげんごってなに?
0699デフォルトの名無しさん (ワッチョイ dfad-b946)
垢版 |
2024/04/29(月) 22:45:20.14ID:c1TFMEcy0
知り合いにエミュレータ入れたりして凄く苦労してロータス123を動かして業務で使っている人が居る。
0700デフォルトの名無しさん (ワッチョイ 8732-nVjz)
垢版 |
2024/04/30(火) 00:46:15.48ID:b4FWQSR70
使うのに手間はあるとはいえエミュレータが成熟してしまったので
かなり古いソフトウェアを動かしたいならそっちでやれと言えてしまうようになったとも言える。
Windows の互換性維持システムも結局はエミュレータをサブシステムとして
組み込んでるようなもんだしな。
0702デフォルトの名無しさん (ワッチョイ df79-V7Lt)
垢版 |
2024/04/30(火) 19:37:21.97ID:6siWZQQV0
なんで16bitの話になったのか理解不能
0703デフォルトの名無しさん (ワッチョイ dfad-b946)
垢版 |
2024/05/01(水) 16:53:57.29ID:udfiR5VM0
>>686の辺りから?
0705デフォルトの名無しさん (ワッチョイ df79-V7Lt)
垢版 |
2024/05/02(木) 23:28:34.67ID:gN+cVuNV0
CでCOMやれって言われても困るし
逆にC++のがマシってのはその程度か
0706デフォルトの名無しさん (ワッチョイ 5ff4-NzXl)
垢版 |
2024/05/03(金) 11:04:22.77ID:RJtMknPi0
cでもできるってのと、c++使ったほうが楽ってのでは全然意味違う
チームで混乱を招くという理由以外でのc++ディスりは、大抵理解不足によるアレルギーから来るヒスのことが多い
まあ、そういうヒス起こす人が多いからチームでは使用禁止とかになっちゃうわけだから、り繋がってはいるんだけど
0715デフォルトの名無しさん (ワッチョイ dfac-R43V)
垢版 |
2024/05/04(土) 01:40:48.74ID:nSEmjq+y0
メモリ構成が非常に小さいシステムの場合Cじゃない?
8bitのPICとか
0716デフォルトの名無しさん (ワッチョイ ff2d-y8PE)
垢版 |
2024/05/04(土) 17:05:29.45ID:VOfnZKej0
こういうの考えたんだけどどうだろう?
実用性無いだろうか

#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;
}
0721はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 8f32-uq6a)
垢版 |
2024/05/05(日) 00:00:07.41ID:NN+M7fak0
>>716
「こういうの」とは何であるか説明が必要。
提示されたコードは関数 exception_occurred の呼び出しを回りくどくやっているだけで、
途中のメカニズムに意味がない。
(このコードでの使い方の範囲では。)

言葉で説明しづらいならこれが有用になるような使い方の例を示して欲しい。
0723はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 8f32-uq6a)
垢版 |
2024/05/05(日) 00:22:13.83ID:yEjzRI9b0
>>722
C の言語仕様の範囲内でやる方法は setjmp/longjmp のみ。
setjmp/longjmp を自分で書きたいってことなら
アセンブラ (またはインラインアセンブラや intrinsic 関数) を使って
スタックポインタ操作したりレジスタの待避・復旧などをやる必要があるが……。

モダンな処理系だと最適化だのなんだのの都合でスタックフレームを省略したりだとかもあるので
それらと協調しないとまともに動作しない。
たとえば gcc だと setjmp/longjmp の実体は
組み込み関数の __builtin_setjmp/__builtin_longjmp として提供されてる。
処理系自体の機能として持たないとちゃんと動作させられんのだ……。
レスを投稿する


ニューススポーツなんでも実況