C言語なら俺に聞け 147

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2018/08/16(木) 23:36:02.22ID:fOCSKLtw
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/

C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.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言語なら俺に聞け 146
https://mevius.5ch.net/test/read.cgi/tech/1525031257/
2018/08/25(土) 14:45:50.69ID:yggGxXGy
で?
453デフォルトの名無しさん
垢版 |
2018/08/25(土) 14:46:13.55ID:0r5h6/lL
で、正しい結果になった?
2018/08/25(土) 14:49:17.98ID:XpRMjBtL
ビット数がWebだと32なのでそこで矛盾があっただけだった
ちゃんと作って張りなおされたやつは数千桁あっという間に求めるやつだったぞ
みただろ?
455デフォルトの名無しさん
垢版 |
2018/08/25(土) 14:50:29.77ID:0r5h6/lL
オレはしっかり低学歴知恵遅れが相当に頭悪いことを
しっかり 実 証 してるからな
2018/08/25(土) 14:51:46.41ID:yggGxXGy
半角君が劣化コピーして

if (32bit変数 & 0x8000000000000000)
がTRUEにならんとか騒いでたね
2018/08/25(土) 14:53:18.47ID:XpRMjBtL
あれ劣化コピーだったんかいw
最悪だな
458デフォルトの名無しさん
垢版 |
2018/08/25(土) 14:53:24.24ID:0r5h6/lL
1~64まで足して
まず0x8000000000000000
になるとかないからな

ぱっと見で分かるレベルだからな
相当な知恵遅れでなければな
2018/08/25(土) 14:53:37.08ID:yggGxXGy
>>455
低学歴知恵遅れに大差で3連敗するって
どんな気持ち?
460デフォルトの名無しさん
垢版 |
2018/08/25(土) 14:55:14.91ID:0r5h6/lL
かわいそうに
精神的勝利か

低学歴知恵遅れのゴミクズ人間が
まともな人間に勝てるワケがないからな
2018/08/25(土) 14:56:30.95ID:yggGxXGy
>>458
n += n;

まだこんな簡単なコードを理解してないとは思わなかった
説明もしたのに

これが1から64まで足すコードに見えるってヤバくないか?
2018/08/25(土) 14:56:39.44ID:y6eIypE7
あのカウントは統治分割の管理用じゃなかったっけ?
463デフォルトの名無しさん
垢版 |
2018/08/25(土) 14:57:17.04ID:0r5h6/lL
で、実行結果みた?
2018/08/25(土) 14:57:45.75ID:yggGxXGy
単に順番にビットを端からスキャンしてるだけ
465デフォルトの名無しさん
垢版 |
2018/08/25(土) 14:58:36.91ID:0r5h6/lL
n = 0 (z)0 (f)0 (m)0 (aho)1
n = 1 (z)1 (f)1 (m)1 (aho)1
n = 2 (z)1 (f)1 (m)1 (aho)1
n = 3 (z)2 (f)2 (m)2 (aho)1
n = 4 (z)3 (f)3 (m)3 (aho)1
n = 5 (z)5 (f)5 (m)5 (aho)1
n = 6 (z)8 (f)8 (m)8 (aho)1
n = 7 (z)13 (f)13 (m)13 (aho)1
n = 8 (z)21 (f)21 (m)21 (aho)1
n = 9 (z)34 (f)34 (m)34 (aho)1
n = 10 (z)55 (f)55 (m)55 (aho)1
n = 11 (z)89 (f)89 (m)89 (aho)1
n = 12 (z)144 (f)144 (m)144 (aho)1
n = 13 (z)233 (f)233 (m)233 (aho)1
n = 14 (z)377 (f)377 (m)377 (aho)1
n = 15 (z)610 (f)610 (m)610 (aho)1
n = 16 (z)987 (f)987 (m)987 (aho)1

64bitとか以前の問題だからな
2018/08/25(土) 14:59:30.35ID:yggGxXGy
お前が劣化コピーしたのがahoの欄
2018/08/25(土) 15:00:08.15ID:XpRMjBtL
64ビットのとこ直したうえでその結果?
468デフォルトの名無しさん
垢版 |
2018/08/25(土) 15:00:50.04ID:0r5h6/lL
知恵遅れの脳内では987がunsigned intでオーバーフローする
2018/08/25(土) 15:00:55.69ID:yggGxXGy
https://ideone.com/hklTK1
470デフォルトの名無しさん
垢版 |
2018/08/25(土) 15:01:52.08ID:0r5h6/lL
当然
https://ideone.com/vhpLPV
851 名前:デフォルトの名無しさん (ワッチョイ 0b50-2km2)[sage] 投稿日:2018年08月11日(土) 00時06分54秒68 [深夜] ID:N9ICkOCi0 [1/10] (PC)
10000進数多倍長
超単純なFFT
演算は乗算と加算のみ
誤差の感じから100000進数でも大丈夫そうですね

計算式は基本以下を多倍長にしただけ
多少の無駄は除いてますが

----
uint64_t f(uint64_t n){
n++;
uint64_t a = 1;
uint64_t b = 0;
uint64_t t;
for (int i = 0 ; i < 64 ; i++){
t = b * b;
b = 2 * a * b + t;
a = a * a + t;
if (n & 0x8000000000000000){
t = b;
b = a + b;
a = t;
}
n += n;
}
return a;
}
2018/08/25(土) 15:02:52.94ID:yggGxXGy
https://ideone.com/4a3zE8
32bit対応版

>>469は64bit環境だと正しく動きます

正しく動かないのは半角君が劣化コピーしたコード
472デフォルトの名無しさん
垢版 |
2018/08/25(土) 15:03:38.02ID:0r5h6/lL
知恵遅れがどっかからコピってきたコードはってるわ
2018/08/25(土) 15:04:01.61ID:yggGxXGy
>>470は正しく動きますよ
2018/08/25(土) 15:04:45.01ID:5ar3I1wr
半角はいつも負けてるな
475デフォルトの名無しさん
垢版 |
2018/08/25(土) 15:04:48.85ID:0r5h6/lL
コレが低学歴知恵遅れが低学歴知恵遅れであることの 実 証 も含めた
エレガントなレス

866 自分:デフォルトの名無しさん (ワッチョイ de80-oNxq)[] 投稿日:2018年08月11日(土) 11時39分50秒69 [朝] ID:17qcRus/0 [1/7] (PC)
とりあえずかわいそうなぐらい頭悪いヤツしかいないのは分かった

一旦、多倍長演算向けに3つの方法を評価する
ちなみにgmpの関数にフィボナッチの関数がついてる
きっとこの速度にすら届かないと考えられる(まだ動かしてない)

↓多倍長演算使ってない3つの方法の簡単なコードがコレ
https://ideone.com/vhpLPV
※ オマケでアホが書いたコード(>>851)も入ってる
※ オレの適切なありがたい注釈がついてる

1.ひたすら足し算

2.一般項
 多倍長演算をするまえに適切な精度を設定しないといけない
 どれぐらいの精度にすればいいかがまだ未解決 ※ とりあえず2回計算することでいけるような気がしないでもない

3.再帰階乗演算
 https://www.ics.uci.edu/~eppstein/161/960109.html
 探した中でコイツが一番いい感じがする
 > This is a recursive algorithm, so as usual we get a recurrence relation defining time,
 > just by writing down the time spent in a call to matpow (O(1)) plus the time in each recursive call
 > (only one recursive call, with argument n/2). So the recurrence is
 > time(n) = O(1) + time(n / 2)
476デフォルトの名無しさん
垢版 |
2018/08/25(土) 15:05:25.56ID:0r5h6/lL
webコンパイラで動かしてみ
まちがいなく動かない
2018/08/25(土) 15:05:34.74ID:yggGxXGy
>>470のリンク先は勝手に半角君が変数を32bitに変えちゃったんで動かないだけ

>>470に直接書いてあるコードはそのままで正しく動く
2018/08/25(土) 15:10:38.17ID:XpRMjBtL
劣化コピーっていうか
わざわざ書き換えてるじゃねーか!

釣りだった
2018/08/25(土) 15:13:33.29ID:XpRMjBtL
…ほかがunsigned intだから関数名変えるついでに一緒に変えちゃったのか
これは訴訟レベル
2018/08/25(土) 15:49:42.93ID:RtKY5+V3
>>474
サマータイムのスレとかでも一人空回りしている。
いや、時々変なのも絡まって巻き込んで空回りしてるか。
481デフォルトの名無しさん
垢版 |
2018/08/25(土) 15:58:16.40ID:R/mHQH6/
>>396
俺の場合はCを使ってMapみたいなものまで使わねばならないほど膨大なデータを扱うことが
滅多にないのでだいたいは不要。数百から数千のデータのキーでの検索なんか何も考えずに
ループさせて全検索してしまう。億単位のデータの処理が必要な場合は(だいたいはCではない
言語を使って)RDBにデータを入れてやるかな。その方が楽だから。

ああ、でも、昔 dbm ライブラリとか使ったことあるなあ。半端に多い場合はそういうので良いかも。
今だと Linux ディストリビューションとかは最初から gdbm ライブラリ入ってるの多いと思う。これね。
https://linuxjm.osdn.jp/html/GNU_gdbm/man3/gdbm.3.html
482デフォルトの名無しさん
垢版 |
2018/08/25(土) 16:25:32.56ID:R/mHQH6/
>>413
> if文の中を抜けたい場合ってどうすればいいですか?

抜けようとしなくても抜けるので何もする必要はない。
483デフォルトの名無しさん
垢版 |
2018/08/25(土) 17:08:52.03ID:kfh++Yrt
半角くん、逃亡www
2018/08/25(土) 17:45:22.21ID:3TjQPkhu
半角さんは、巷にあふれるただのマウント野郎とは違って、きちんとソースを出している
唯の者ではないと思います
2018/08/25(土) 17:46:03.47ID:zd32/hlD
コード保守でのバグはこうやって生まれる
うっかりミスの見事な事例がまさかこのスレで見られるとは思ってなかった
2018/08/25(土) 18:00:04.35ID:yggGxXGy
>>484
コードを出しゃ良いってもんじゃない
自分の劣化コピーのせいで動かないコードに対して
今回だけでもこれだけ書いてるから

>>451,458,465,468,470,472,476
487デフォルトの名無しさん
垢版 |
2018/08/25(土) 18:02:07.86ID:0r5h6/lL
2ちゃんねるでしか自己主張できない低学歴知恵遅れが
なんか必死になってるわ

わかりやすいわ
ホント
488デフォルトの名無しさん
垢版 |
2018/08/25(土) 18:03:03.76ID:0r5h6/lL
つまりクソニートと
断定できる
2018/08/25(土) 18:06:11.05ID:yggGxXGy
>>442の1個目3個目は相手が悪かっただけ
としても
2個目は初心者用の課題に対して
初心者が普通に考えるよりはるかに悪いアルゴリズムを選んでおいて
「これを選ばないヤツは知恵遅れ」発言の連投だから

1個目も3個目も言ってることはコロコロ変わるし
「こうしないヤツはアホ」発言をして
自分で変えてるし

>>432も頭おかしいだろ
2018/08/25(土) 18:13:06.50ID:zd32/hlD
働いてはいないがニートと呼べるほど若くもない
早期退職で悠々自適生活の元組込みソフト開発者だよ
491デフォルトの名無しさん
垢版 |
2018/08/25(土) 19:03:57.78ID:kfh++Yrt
半角くんと長文くんのバトルを見てみたい
2018/08/25(土) 19:15:27.06ID:06VRwQlu
是非別スレでやって欲しい
スレ数はいくら使っても良いから
493デフォルトの名無しさん
垢版 |
2018/08/25(土) 19:18:01.37ID:0r5h6/lL
オマエなかなか分かってるわ
オレのレスも文字列的には長い
しかし、中身が濃いから、情報価値も高い
つまり価値が高い情報を継続して提供している

クソニートの長文は情報価値ゼロ
中身スカスカ
ただの落書き
2018/08/25(土) 19:20:58.01ID:sh4ZcDkv
>>493
フリがなかなか分かりにくいんだけど、そこ笑うとこ?
2018/08/25(土) 19:23:40.50ID:06VRwQlu
>>494
失笑なら
496デフォルトの名無しさん
垢版 |
2018/08/25(土) 19:25:27.77ID:0r5h6/lL
オレに敗北はない
このスレのクソニートにも敗北はない

ただコレには違いがある

オレは正面から戦う

クソニートは戦わない
コイツラは身をひそめながら遠くからとりあえず石投げる

この違い
2018/08/25(土) 19:28:15.91ID:sh4ZcDkv
>>496
ああ、ごめん。
一生懸命ネタ振ってたのね。でもネタフリにしてはあんまり面白くはないかな。
ただ俺はそんな一生懸命なお前嫌いじゃない(笑)
2018/08/26(日) 02:50:43.41ID:5Jlr+RDR
一日でこの板に少なくとも 23 回「低学歴知恵遅れ」って書いてるね。
どれだけ拗らせてるの?
2018/08/26(日) 03:24:56.95ID:BwlGzYMc
23/35=65.7%
うぷぷぷ
2018/08/26(日) 09:18:36.35ID:aDjvXB/e
職場で言われていることをここで
2018/08/26(日) 11:23:23.80ID:0Dyu3Dip
いやぁ、今どき職場で「低学歴知恵遅れ」なんて言ってくる上司がいたら
ネット掲示板で同じセリフを繰り返すより、録音して訴えるだろ。

それにしても、まるで署名のように必ず投稿文に盛り込むから、
何か隠された意図があるのでは、と深読みしてしまうのも事実。
単にクセになってて本人には意味の薄い間投詞になってるのかも知れんけど。


…読み取れないとガッカリなので一応書いておくけど、
「いくら匿名の電子掲示板でもそういう言葉遣いは良くないよ」と
たしなめている(忠告している、の方が受け入れやすいかな)つもり。
2018/08/26(日) 11:27:57.33ID:aDjvXB/e
それが当たっていると、訴えるのも恥ずかしいような
2018/08/26(日) 12:44:59.10ID:d3emHXQQ
>>501
純粋かよ
504デフォルトの名無しさん
垢版 |
2018/08/26(日) 14:53:35.15ID:hANAm2gW
低学歴底辺のクソニート、そして底辺ドカタなのは
図星なんでしょ

人間をホントのこといわれると
必死になる
505デフォルトの名無しさん
垢版 |
2018/08/26(日) 14:56:43.12ID:hANAm2gW
残念なことに
低学歴かどうかとか
知恵遅れかどうかとか
クソニートかどうか
底辺ドカタかどうか
レスからすぐに分かってしまう

まともに人間がみればすぐに分かる
キミラはなまとなに人間未満のゴミクズなワケ

その自覚すらない
だからまともな人間にすらなれないわけ

わかった?
2018/08/26(日) 16:10:55.42ID:dQLVYknK
必死なのはお前じゃん
2018/08/26(日) 16:12:25.06ID:LX/My+gD
半コテって一番タチ悪いな
コテハンつけろよNGにするから
2018/08/26(日) 16:25:44.03ID:lAySnCDy
本当は夏休み中の中高生じゃないのか?
何だか妙に精神年齢が幼く思える
2018/08/26(日) 16:27:03.18ID:aDjvXB/e
名前は半角カタカナで頼む
510デフォルトの名無しさん
垢版 |
2018/08/26(日) 16:29:48.93ID:hANAm2gW
図星でしっかり反応してるしな

やっぱりなこのスレは
駆除が必要な典型的な低学歴知恵遅れの
クソニートとか底辺ドカタしかいないわ
2018/08/26(日) 17:09:28.74ID:BwlGzYMc
小馬鹿にした発言が頭悪そうな最高に痛いやつ
2018/08/26(日) 18:07:37.48ID:ujNq2aVI
>>508
確かに夏休み始まった辺りから見かけるようになった気がする
2018/08/27(月) 06:20:27.93ID:sdfxNc/O
>>499
このスレだけなら 35 だが、この板全体の数なんだ。
必死チェッカーもどきを見たら堂々の 2 位で笑った。
いや、彼の御高説をもっと見たかったんだ。
ちなみに「知恵遅れ」はその 23 とは別に単独で 16 回出てきたよ。
2018/08/27(月) 08:24:49.48ID:4HBkx10J
自称、俺最強君()は、昔からしばしば見かけるけど。
小学生にも苦笑されそうなレスばかりで、相手をする気にならないんだよね。

http://hissi.org/read.php/tech/20180825/MHI1aDYvbEw.html
http://hissi.org/read.php/tech/20180826/aEFOQW0yZ1c.html

勝手に勝利宣言して逃亡するまで放置しておくのが吉。
2018/08/27(月) 08:45:35.65ID:4ArgrBnx
半角さんはこの板の唯一の良心
この板は腐ってる
2018/08/27(月) 11:56:02.39ID:woJf6ZC9
>>413
if (条件) {
 …
 …
 ここで(ブロックから)抜けたい -(1)
 … -(2)
} else { … }

こういうこと? (1) はさらに if で条件付で分岐しないと意味がないけど…
※ (1)で分岐しないかぎり (2) 以降が無意味のコードになる

if の外側を do { } while(0) で外を囲って break; したら?
2018/08/27(月) 12:18:18.46ID:yF4/ft+h
>>515
これだな
2018/08/27(月) 12:18:56.82ID:yF4/ft+h
おまえらはすぐにどうでもいいことに流される
519デフォルトの名無しさん
垢版 |
2018/08/27(月) 12:34:41.00ID:ywsjsNTA
>>516
それだったら2を実行するための何らかの条件がある筈なのでそのためのifブロックの中に2を入れればよい。
そつではなく無条件に2を実行したくないならばソースから削除するかコメントにでもすればよい。
520デフォルトの名無しさん
垢版 |
2018/08/27(月) 12:36:44.69ID:ywsjsNTA
すまん。スマホでフリック入力しててタイプミスした。
2018/08/27(月) 12:42:48.65ID:woJf6ZC9
>>519 意図は伝わったぜー
確かにw

if (条件1) {
 …
 if (条件2) { … -(1) } else { … -(2) }
2018/08/27(月) 12:48:15.12ID:nj2QXsVo
>>519
そりゃ方法なんていくらでもあるよ
そういう方法をとりたくないってことだろ
理由はしらんが

たとえば(-2)が大きくてインデントを変えたくないとか
2018/08/27(月) 12:50:40.87ID:vY3QDx2y
だから何でdo while(0)なんて変態コードに固執するんだよ
2018/08/27(月) 12:51:47.69ID:YYT/vI56
>>522
>>521の方法を思い付かなかった、or 妥当な書き方であると知らない、だけだは?
2018/08/27(月) 12:54:54.13ID:woJf6ZC9
元質問者に聞くしかない 「goto は使いたくない」の条件で
526デフォルトの名無しさん
垢版 |
2018/08/27(月) 12:59:44.74ID:ywsjsNTA
ブロックというものを中に入ったら出られないものと勘違いしているとか。
最初にforやwhileを覚えちゃって勘違いに繋がったとか。
2018/08/27(月) 13:22:18.19ID:vY3QDx2y
何人たりともforより先に関数のブロックを憶えるのにね
関数のブロックだけが何か特別なものと思い込んでるケースが多い
2018/08/27(月) 13:25:30.84ID:Q5lEKL35
goto 便利だけどなぁ。
break するがためのフラグ作って何ブロックも break するとか goto を避けるがためのいびつな if を連続させるとかよりよほど可読性が高い。
もちろん意味を的確に表したフラグやifの構造にできるに越したことはないけどさ。
2018/08/27(月) 13:28:07.17ID:aXwyVMA/
>>523
あえて固執して解決方法を編み出しておくと
ひょんなときに役立つことがあるしな
準備なんてのは9割無駄で当たり前だよね
2018/08/27(月) 13:31:18.13ID:vY3QDx2y
ジャクソン法やワーニエ法みたいに
データ構造とプログラム構造を一致させる構造化プログラミング()では
データが損傷していた場合にはプログラム構造を一致させることができない
よって構造化定理を諦めたアプローチをせざるを得ない
こういうのがgotoやlongjmpの出番
2018/08/27(月) 13:32:12.14ID:vY3QDx2y
>>529
その説明じゃ変態行為に固執する理由が説明できてないだろ
ええ加減にせんか、この変態!
532デフォルトの名無しさん
垢版 |
2018/08/27(月) 13:35:23.06ID:ywsjsNTA
ま、Cの場合は適切にgoto使った方が良いだろうな。後から作られた言語では break でラベル指定できるだの例外処理できるだのしてるから使わなくて済むようになってるわけで、それのないCはそれの代わりにgoto利用しちゃった方が分かりやすく書ける。
2018/08/27(月) 13:41:42.47ID:vY3QDx2y
いやCのgotoは制限がキツすぎて
いざという時には役立たず
だからlongjmpがある
2018/08/27(月) 14:22:47.97ID:Q5lEKL35
そんな制限キツかったっけ?
longjump の方がキツいでしょ
2018/08/27(月) 14:23:38.81ID:vY3QDx2y
何がキツいって関数から出らんない
2018/08/27(月) 14:34:05.72ID:J1p6Vf0T
setjump/longjumpは簡易タスクディスパッチャーをC言語だけで実現するためだけにあるのかと思ってたよ。
それ以外の用途はあんまり思い浮かばないなぁ。
2018/08/27(月) 14:40:44.92ID:TsaU1TVW
自分で対処不能なエラーが起きたときに、初期化してやり直す時に使ったな
だもんで通常の処理の流れで使うものだとは思わなかった
2018/08/27(月) 16:09:02.07ID:vY3QDx2y
ディスパッチャとしてはダメダメじゃん
jmp_buf jb;

void sig(int n)
{
longjmp(jb, 1);
}

int main(void)
{
signal(SIGINT, sig);
if (setjmp(jb) == 0) for (;;) ;
else puts("ok");
return 0;
}
俺んとこではokが出ない
おまいらんとこではどんな結果になる?
2018/08/27(月) 16:16:45.47ID:J1p6Vf0T
確かsignalとlongjmpは相性悪かったような?
よく覚えてないけど。
540デフォルトの名無しさん
垢版 |
2018/08/27(月) 16:27:43.33ID:VuJs8kRo
>>538
こちらは Linux (CentOS7)だが、出たよ。
541デフォルトの名無しさん
垢版 |
2018/08/27(月) 16:29:13.02ID:VuJs8kRo
>>539
sigsetjmp(), siglongjmp() ってのがあるので、そっち使った方が良さそうではあるな。
2018/08/27(月) 16:33:51.80ID:J1p6Vf0T
Linuxとかならpthreadがあるのでわざわざ自分でディスパッチャ作ることはないと思うけど、組み込み用に簡易的に作ることはあるかもね。

俺は組み込みならprotothreadsのほうがシンプルで好き。
2018/08/27(月) 17:20:53.65ID:cJbIVPPr
#include <signal.h>
void (*signal(int signum, void (*sighandler)(int signum)))(int signum);

この宣言が読めない
2018/08/27(月) 17:30:35.88ID:vY3QDx2y
signal 関数名
signum 第1仮引数名
sighandler 第2仮引数名

sighandler ポインタ
*sighandler 関数
signum 第1仮引数名

signalの返却値はsighandlerと同じ型
2018/08/27(月) 18:31:36.73ID:C1HpzEi0
>>524
思い浮かばないってのがなかなか考えられない
ていうか、
for/while/do while 以外もbreakで抜けられたら良いと思ったことが私もある


>>525
なぜgotoは使いたく無い?
という質問の答えも聞いておかないと
コーディング規約なのか宗教なのか
gotoの使い方を知らないだけなのか
2018/08/27(月) 18:49:30.60ID:C1HpzEi0
>>536
OSのタスク切り替え処理
ブートローダーからアプリケーションへのジャンプ
リセット
例外処理
2018/08/27(月) 19:22:28.99ID:FN2jn8ES
>>546
全て別の方法で実現しちゃうので、俺的にはlongjmpの必要性を感じないかな?
2018/08/27(月) 19:30:11.24ID:m5aHtIH2
>>530
高度すぎてなに言ってるかわからん
2018/08/27(月) 19:46:09.70ID:nZJhjhuf
まあデータの損傷をいきなりデータ構造そのものの破綻に結びつけるのは些か強引な論理展開ではあるな
2018/08/27(月) 19:55:16.65ID:C1HpzEi0
>>547
関数ポインタ
アセンブラ
スタック書き換え

このどれか?
2018/08/27(月) 20:08:36.09ID:FN2jn8ES
>>550
こんな感じ。

OSのタスク切り替え処理
→普通にOSの機能を使う、カーネルなしで簡易ディスパッチャ実装はpthread

ブートローダーからアプリケーションへのジャンプ
→アドレス固定ならアドレスを関数ポインタにキャストしてジャンプ、またはインラインアセンブラ

リセット
→周辺機能やbssやdataセクションも初期化したいのでWDT等のCPUリセット機能を使う

例外処理
→密結合を避けるためオーソドックスに返り値で判定、最後にgoto使うかも?

そういや例外処理longjmpで思い出したけど、一昔以上前のCマガジンにマクロでC++と同じようなtry〜catch構文実装方法の記事があったけど、確かにそのマクロ内ではsetjmp/longjmp使ってたわ。
マクロでカプセル化してれば例外処理で使うかも。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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