!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
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言語なら俺に聞け 157
https://mevius.5ch.net/test/read.cgi/tech/1624846971/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
C言語なら俺に聞け 158
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ブーイモ MMcf-4SjH)
2021/12/25(土) 12:11:46.61ID:xxeaCAplM314デフォルトの名無しさん (ワッチョイ 1bd7-UGCc)
2022/03/11(金) 21:28:24.41ID:FGXUCKCr0 1MiB以上と未満で挙動を分けているmallocはよく見かけるね
315デフォルトの名無しさん (ブーイモ MM8f-URqd)
2022/03/11(金) 21:50:14.89ID:o502mXGNM >>308
実装を知っていれば意図的にフラグメントは起こせる、という程度で気にしなければ普通起きない
実装を知っていれば意図的にフラグメントは起こせる、という程度で気にしなければ普通起きない
316デフォルトの名無しさん (ワッチョイ 82a6-QV3l)
2022/03/12(土) 00:08:34.44ID:NOu0XfGq0317デフォルトの名無しさん (ワッチョイ 82ad-WCXV)
2022/03/12(土) 01:41:51.18ID:NpUzvYny0 >>308
普通のアプリ動かしているだけなのにOSが落ちるとすると、そのOSは何かおかしい。OSにバグがあるのではないか?
普通のアプリ動かしているだけなのにOSが落ちるとすると、そのOSは何かおかしい。OSにバグがあるのではないか?
318デフォルトの名無しさん (ワッチョイ ee63-9pEf)
2022/03/12(土) 13:07:51.07ID:aRaeBtiY0 普通に車を運転してたら事故った
車に欠陥があるはず
車に欠陥があるはず
319デフォルトの名無しさん (ワッチョイ ee46-NFVq)
2022/03/12(土) 15:32:14.60ID:XvQpUkSW0 九州のタクシー暴走事故はプリウスのせいだと思っている。
320デフォルトの名無しさん (ワッチョイ ee63-9pEf)
2022/03/12(土) 16:34:06.63ID:aRaeBtiY0 プリウスの制御プログラムを書いた人、ここにいませんか?
321デフォルトの名無しさん (ドコグロ MM95-koMU)
2022/03/12(土) 18:00:40.48ID:WugjRoTQM 仮にいたとしても名乗り出ないだろw
322デフォルトの名無しさん (ワッチョイ e5d7-JxOY)
2022/03/12(土) 18:10:20.20ID:kaM/Ypx70 >>318
当然、疑うことだね
当然、疑うことだね
323デフォルトの名無しさん (ワッチョイ 6ebb-easS)
2022/03/12(土) 18:29:57.19ID:0pfFD5zX0 ドライバーの単体テストは実施してたんですか?
324デフォルトの名無しさん (ワッチョイ 82ad-WCXV)
2022/03/12(土) 23:53:51.20ID:NpUzvYny0 >>318
それは今回の話には当てはまらない。普通のアプリを動かしていたらアプリが落ちた、だったら当てはまる。
今回の話を喩えるなら普通の車を運転していたら道路が陥没したみたいになる。OSの方が落ちたんだから。
それは今回の話には当てはまらない。普通のアプリを動かしていたらアプリが落ちた、だったら当てはまる。
今回の話を喩えるなら普通の車を運転していたら道路が陥没したみたいになる。OSの方が落ちたんだから。
325デフォルトの名無しさん (ワッチョイ ee63-9pEf)
2022/03/12(土) 23:56:33.44ID:aRaeBtiY0 そうか?
池袋事故では最後まで車の欠陥を主張してたぞ
普通にって表現は、あくまでも本人の主観だからな
池袋事故では最後まで車の欠陥を主張してたぞ
普通にって表現は、あくまでも本人の主観だからな
326デフォルトの名無しさん (ワッチョイ ee46-NFVq)
2022/03/13(日) 00:27:55.58ID:8TmiOcWs0 上級国民は医師に運転を止められていた欠陥アプリなので、譬喩に用いるには特殊すぐる。
327デフォルトの名無しさん (ワッチョイ ee63-9pEf)
2022/03/13(日) 00:30:40.49ID:giayljWn0 事故起こした奴って自分が原因だと思ってないだろう
328デフォルトの名無しさん (ワッチョイ e5d7-JxOY)
2022/03/13(日) 06:05:08.20ID:g8VV1ENe0 常に自分を疑え、なんて根性論めいた主張には興味ないし
弁護士に譲歩的なことを言うなと指示されて本当に思っていることと違うことを陳述するのもこの議論とは関係ない
弁護士に譲歩的なことを言うなと指示されて本当に思っていることと違うことを陳述するのもこの議論とは関係ない
329デフォルトの名無しさん (スッップ Sda2-Rvba)
2022/03/13(日) 06:10:49.96ID:kdm08K3Td330デフォルトの名無しさん (ワッチョイ b901-jCaJ)
2022/03/13(日) 11:39:10.82ID:HQz48e8Z0 >>308
malloc,freeを多用すると
解放し忘れが多くなり
メモリが断片化して
新規メモリが確保できなくなってエラー吐いてんのに
エラーチェックもせずにポインターにアクセス
そしてプログラムが落ちる
さらにOSを巻き込んでPCごと落ちる
でも今時のOSは生半可なことでは巻き込まれない
malloc,freeを多用すると
解放し忘れが多くなり
メモリが断片化して
新規メモリが確保できなくなってエラー吐いてんのに
エラーチェックもせずにポインターにアクセス
そしてプログラムが落ちる
さらにOSを巻き込んでPCごと落ちる
でも今時のOSは生半可なことでは巻き込まれない
331デフォルトの名無しさん (ワッチョイ 69d2-nn6q)
2022/03/13(日) 17:40:39.42ID:5qwn5s+60 解放し忘れ(メモリリーク)と断片化は別概念
16byteを4回確保した後に1回目と3回目で確保したメモリだけ解放すると、
合計32byte空いてるのに飛び地になってるから32byte領域として扱えない
16byteを4回確保した後に1回目と3回目で確保したメモリだけ解放すると、
合計32byte空いてるのに飛び地になってるから32byte領域として扱えない
332デフォルトの名無しさん (アウアウエー Sa8a-0txc)
2022/03/13(日) 22:53:37.11ID:A2eUK16/a malloc/freeを多用すると解放忘れが多くなるものなのか?
333デフォルトの名無しさん (ワッチョイ 82ad-WCXV)
2022/03/14(月) 01:27:18.72ID:OOlFm33n0 そりゃプログラムがおかしいだけ
334デフォルトの名無しさん (ワッチョイ ee63-9pEf)
2022/03/14(月) 10:46:27.63ID:z8DyGqYY0 C言語ではなくスクリプトだが、
無限にSubdirを掘り続ける奴書いて動かしたら、OS落ちたな
XPだったが
無限にSubdirを掘り続ける奴書いて動かしたら、OS落ちたな
XPだったが
335デフォルトの名無しさん (ワッチョイ e5d7-JxOY)
2022/03/14(月) 11:00:21.69ID:GQP59fXj0 fork爆弾みたいな実験か
336デフォルトの名無しさん (スプッッ Sd02-nn6q)
2022/03/14(月) 16:40:21.91ID:LP3GQSIPd OS名はあえて書かないが
Visual C++のmallocで1GBを256回確保しただけで落ちたな
Visual C++のmallocで1GBを256回確保しただけで落ちたな
337デフォルトの名無しさん (ワッチョイ 82ad-6g0K)
2022/03/14(月) 17:46:29.09ID:OOlFm33n0 Windowsは昔から落ちやすい印象
なんというか、OS自体もなんか少しユルい上にみんなして色んなドライバ作って組み込むもんだから余計に落ち易くなってんじゃないかな。
なんというか、OS自体もなんか少しユルい上にみんなして色んなドライバ作って組み込むもんだから余計に落ち易くなってんじゃないかな。
338デフォルトの名無しさん (ワッチョイ 6910-pPbi)
2022/03/14(月) 17:51:09.33ID:L/zgcwZ50 Win98で512バイトぐらいをいくつmalloc出来るかと試したことがあって、
10万回ちかくでNULL返した・・・いや、1万回だったかな?。
とりあえずOSもアプリも落ちなかった。
10万回ちかくでNULL返した・・・いや、1万回だったかな?。
とりあえずOSもアプリも落ちなかった。
339デフォルトの名無しさん (オイコラミネオ MM95-W3oF)
2022/03/15(火) 21:09:49.60ID:uaV7elHUM340デフォルトの名無しさん (ワッチョイ 69b3-9blg)
2022/03/15(火) 21:12:16.49ID:oV08M4Ak0 あなたの基準では世界中アホだらけやな
341デフォルトの名無しさん (オイコラミネオ MM95-W3oF)
2022/03/15(火) 21:19:55.67ID:uaV7elHUM 一部のバカに対して言ってる
マジで::printfなんて使ってるやつなんて滅多にいない
マジで::printfなんて使ってるやつなんて滅多にいない
342デフォルトの名無しさん (オイコラミネオ MM95-W3oF)
2022/03/15(火) 21:22:08.63ID:uaV7elHUM 誰も使ってない表記法使うアホのせいで改めて調べないといけなくなる
使われてないから敢えて教科書に書かれてないし教科書に書かれてないんだから知らないやつが多数派ってことがわからんバカ
使われてないから敢えて教科書に書かれてないし教科書に書かれてないんだから知らないやつが多数派ってことがわからんバカ
343デフォルトの名無しさん (オッペケ Sr91-6sol)
2022/03/16(水) 00:50:46.44ID:HRRT9pv8r 知らなくて馬鹿にされたのかな?辛かったね、大変だったね。カワイソウニ(´;ω;`)ウッ…
344デフォルトの名無しさん (ワッチョイ e5d7-JxOY)
2022/03/16(水) 05:23:40.43ID:sZ1wd+Ly0 有効範囲解決演算子はスレ違いだぞ
345デフォルトの名無しさん (オッペケ Sr91-9aVa)
2022/03/16(水) 13:21:40.48ID:IYkrMFX0r Cに namespace の概念ってある?
346デフォルトの名無しさん (スプッッ Sd02-nn6q)
2022/03/16(水) 13:45:31.87ID:EozDCnXud gotoラベル
構造体のtag名
構造体のメンバ名
それ以外
という概念のnamespaceならある
typedef struct A{int A;} A;
int main(){ A: return 0;}
で4種類のAを区別できるというだけで、ns::A とかの話ではないが
構造体のtag名
構造体のメンバ名
それ以外
という概念のnamespaceならある
typedef struct A{int A;} A;
int main(){ A: return 0;}
で4種類のAを区別できるというだけで、ns::A とかの話ではないが
347デフォルトの名無しさん (オッペケ Sr91-9aVa)
2022/03/16(水) 14:57:34.41ID:IYkrMFX0r ああ
それぞれで固有の識別子を記憶する空間があるから ぱっとみの文字が衝突しててもセーフ
という概念か
コンパイラ記述するときにめんどくさそうね
文意からこっちのテーブルを参照すべきとか
それぞれで固有の識別子を記憶する空間があるから ぱっとみの文字が衝突しててもセーフ
という概念か
コンパイラ記述するときにめんどくさそうね
文意からこっちのテーブルを参照すべきとか
348デフォルトの名無しさん (ワッチョイ 7b7b-P46e)
2022/03/19(土) 11:24:46.11ID:fvSihUDg0 初歩的な質問ですが、
b = a++;
という式はbにaの値を代入してからaをプラス1しますが、
演算子の優先度を考えると、++が優先度高く、=は右優先です
優先度の高い++をしてから代入するように感じるのですが
そうならない理由をご教示ください
b = a++;
という式はbにaの値を代入してからaをプラス1しますが、
演算子の優先度を考えると、++が優先度高く、=は右優先です
優先度の高い++をしてから代入するように感じるのですが
そうならない理由をご教示ください
349デフォルトの名無しさん (ワッチョイ 99e4-9HQ1)
2022/03/19(土) 11:57:41.89ID:VgIBj69P0 a++が返す値は、aをインクリメントする前の値だからだよ
350デフォルトの名無しさん (スッップ Sd33-2DeC)
2022/03/19(土) 12:07:43.36ID:X795CU5ld b=a++;
のインクリメントが実行されるのは式を評価した後
のインクリメントが実行されるのは式を評価した後
351デフォルトの名無しさん (ワッチョイ 7b7b-P46e)
2022/03/19(土) 12:40:35.63ID:fvSihUDg0 返信ありがとうございます
演算子の優先度を調べると++が=より優先度が高いはずです
式の処理は優先度の高い演算子から処理されると理解しています
そうすると、++が先に実行された後で=(代入)が実行されてもおかしくないと
考えたのですが、どこに誤りがあるのでしょうか?
演算子の優先度を調べると++が=より優先度が高いはずです
式の処理は優先度の高い演算子から処理されると理解しています
そうすると、++が先に実行された後で=(代入)が実行されてもおかしくないと
考えたのですが、どこに誤りがあるのでしょうか?
352デフォルトの名無しさん (ワッチョイ 1302-dhUW)
2022/03/19(土) 12:53:26.53ID:UXt2lmR80 そういう時のために
++i
i++
ちゃんと2種類の書き方が用意されてるんだよ
++i
i++
ちゃんと2種類の書き方が用意されてるんだよ
353デフォルトの名無しさん (ワッチョイ 7be9-noGs)
2022/03/19(土) 12:55:08.49ID:d0FibUHe0354デフォルトの名無しさん (スッップ Sd33-2DeC)
2022/03/19(土) 12:56:54.66ID:X795CU5ld 演算子の結合順位と副作用完了点の概念は別
というか b=a;a=a+1; を1文で書くためにa++ 周りのの仕様を特別扱いして実現してる
というか b=a;a=a+1; を1文で書くためにa++ 周りのの仕様を特別扱いして実現してる
355デフォルトの名無しさん (ワッチョイ 7b7b-P46e)
2022/03/19(土) 13:30:03.55ID:fvSihUDg0 返信ありがとうございます
++、--の場合は、前置、後置で
式の評価順が通常と異なると覚えました
式の評価順を理論から理解していないので
忘れてしまって失敗するかもしれませんが、
そのうち定着すると思っています
++、--の場合は、前置、後置で
式の評価順が通常と異なると覚えました
式の評価順を理論から理解していないので
忘れてしまって失敗するかもしれませんが、
そのうち定着すると思っています
356デフォルトの名無しさん (ワッチョイ 13ad-bSSa)
2022/03/19(土) 15:38:29.74ID:CZI3HevE0 よくわからない場合や使うと分かり辛くなる場合は使わないで冗長な書き方した方が良いかも知れない。
使わなくても最近のコンパイラは最適化掛ければ適当にうまいことやって最終的に作られるコードは同じになる可能性が高いと思う。
使わなくても最近のコンパイラは最適化掛ければ適当にうまいことやって最終的に作られるコードは同じになる可能性が高いと思う。
357デフォルトの名無しさん (アウアウウー Sa5d-oCcm)
2022/03/19(土) 17:00:25.72ID:mw5TX/57a b = a++;
の右辺を評価した結果は aの元の値で、副作用として aのアドレスにあるオブジェクトをインクリメントしているのでは
代入されるのは aの内容でなく、アドレスを持たない値で
の右辺を評価した結果は aの元の値で、副作用として aのアドレスにあるオブジェクトをインクリメントしているのでは
代入されるのは aの内容でなく、アドレスを持たない値で
358デフォルトの名無しさん (アウアウウー Sa5d-oCcm)
2022/03/19(土) 17:03:51.29ID:mw5TX/57a a++ は右辺値で、 ++a は左辺値
359デフォルトの名無しさん (スッップ Sd33-2DeC)
2022/03/19(土) 17:12:51.80ID:X795CU5ld どっちも右辺値としないとまずい
int main(){
int a=0;
int* p;
p=&(++a); // コンパイルエラー
p=&(a++); // こっちも
}
int main(){
int a=0;
int* p;
p=&(++a); // コンパイルエラー
p=&(a++); // こっちも
}
360デフォルトの名無しさん (アウアウウー Sa5d-oCcm)
2022/03/19(土) 17:42:57.61ID:mw5TX/57a そうだね、失礼しました
361デフォルトの名無しさん (ワッチョイ 11f0-B0ie)
2022/03/19(土) 17:50:05.80ID:nPptgbtB0 : BassClass(
std::format (IdPrefix, index, numBank)),(
std::format (NamePrefix, ++index, numBank))
ちょうどこんな感じのコンストラクタでラッパーするコード書いてたんだけど
インクリメントしてない方までつられて増えちゃうんだよね
C++のコード片でスマソン
std::format (IdPrefix, index, numBank)),(
std::format (NamePrefix, ++index, numBank))
ちょうどこんな感じのコンストラクタでラッパーするコード書いてたんだけど
インクリメントしてない方までつられて増えちゃうんだよね
C++のコード片でスマソン
362デフォルトの名無しさん (スッップ Sd33-kk3k)
2022/03/19(土) 18:11:19.38ID:8Fsv/onud d = ++a + b-- + --c + a++;
この結果は
++a;
--c;
d = a + b + c + a;
b--;
a++;
だよね
実際はこんな書き方しないほうがいいがw
この結果は
++a;
--c;
d = a + b + c + a;
b--;
a++;
だよね
実際はこんな書き方しないほうがいいがw
363デフォルトの名無しさん (ワッチョイ 7be9-noGs)
2022/03/19(土) 18:25:12.86ID:d0FibUHe0364デフォルトの名無しさん (ドコグロ MMbd-zKmY)
2022/03/19(土) 18:39:08.49ID:Uza1/JxDM365デフォルトの名無しさん (ワッチョイ 8bbb-35g2)
2022/03/19(土) 19:05:15.57ID:9SMEw2CG0 以下のような関数がインラインで実行されてるだけで、評価自体は++が先に行われてるんでないの?知らんけど
int inc(int* a) {
int ret = *a;
*a = *a + 1;
return ret;
}
int inc(int* a) {
int ret = *a;
*a = *a + 1;
return ret;
}
366デフォルトの名無しさん (アウアウウー Sa5d-63z5)
2022/03/19(土) 19:10:54.79ID:fJWxsuK3a 引数の評価順なんてCPUでも変わるだろ。
367デフォルトの名無しさん (ワッチョイ 8161-2DeC)
2022/03/19(土) 20:25:22.26ID:hj0ig94x0 未定義動作警察だ!
未定義動作の動作は定義されていないのでコンパイラは何をしてもいい
> d = ++a + b-- + --c + a++;
このコードの場合、
++a;--c;d=...; b--;a++;相当のコードを吐いてもいいし、
tmp=a;a=tmp+1;--c;d=...; b--;a=tmp+1; 相当のコードを吐いてもいい。
大抵は未定義動作がないことを前提に最適化をかけるが。
極端なことを言えば、d=42としてもいい。
この文の見た目の動作は定義されていないから
未定義動作の動作は定義されていないのでコンパイラは何をしてもいい
> d = ++a + b-- + --c + a++;
このコードの場合、
++a;--c;d=...; b--;a++;相当のコードを吐いてもいいし、
tmp=a;a=tmp+1;--c;d=...; b--;a=tmp+1; 相当のコードを吐いてもいい。
大抵は未定義動作がないことを前提に最適化をかけるが。
極端なことを言えば、d=42としてもいい。
この文の見た目の動作は定義されていないから
368デフォルトの名無しさん (ワッチョイ fb43-0XB4)
2022/03/20(日) 00:26:15.18ID:dAApHicf0 fgetsのファイル終了・エラー時の戻り値がNULLなのはなぜですか?
他の入出力関係の関数の戻り値はEOFになっています
いま入出力の勉強をしてるんですが、関数の引数や戻り値が少しずつ違うので覚えるのが難しいです
使っていくうちに覚えていくものでしょうか?
他の入出力関係の関数の戻り値はEOFになっています
いま入出力の勉強をしてるんですが、関数の引数や戻り値が少しずつ違うので覚えるのが難しいです
使っていくうちに覚えていくものでしょうか?
369デフォルトの名無しさん (ワッチョイ 8bbb-35g2)
2022/03/20(日) 00:53:13.92ID:tmhbCmKs0 細かな仕様はよく使うもの以外は毎度調べるよ
まあCの関数は数が少ないから全部覚えてるって人も少なくないかも
まあCの関数は数が少ないから全部覚えてるって人も少なくないかも
370デフォルトの名無しさん (ワッチョイ 8b63-noGs)
2022/03/20(日) 00:57:50.69ID:rKPZjyik0 よく使う関数の戻り値調べると面白いぞ
printfが何を返しているかとか、それは何故なのかとか
戻り値を使っている人を見たことがないけれど
printfが何を返しているかとか、それは何故なのかとか
戻り値を使っている人を見たことがないけれど
371はちみつ餃子 ◆8X2XSCHEME (ワッチョイ d93e-bSSa)
2022/03/20(日) 01:37:41.92ID:u4Grkyrm0 >>361
こういう場合については未定義ではないが未規定の動作が含まれる。
副作用完了点の間で同一のオブジェクトに複数回の書き換えが生じた場合には未定義の動作となるが、
書き換えが一度の場合はその書き換えがどのタイミングで起こるかわからないというだけで、
未定義の挙動にはならない。
こういう場合については未定義ではないが未規定の動作が含まれる。
副作用完了点の間で同一のオブジェクトに複数回の書き換えが生じた場合には未定義の動作となるが、
書き換えが一度の場合はその書き換えがどのタイミングで起こるかわからないというだけで、
未定義の挙動にはならない。
372デフォルトの名無しさん (スッップ Sd33-kk3k)
2022/03/20(日) 08:21:37.14ID:e7HuEm7id373デフォルトの名無しさん (ワッチョイ 7b7b-P46e)
2022/03/20(日) 10:46:46.29ID:+oGVYZOT0 組み込みのソフトしていると
使わない関数が多くて忘れていきます
使わない関数が多くて忘れていきます
374デフォルトの名無しさん (スッップ Sd33-2DeC)
2022/03/20(日) 11:48:15.83ID:w4XPcyomd <stdio.h>は使えないとして組み込み系って使える標準ライブラリあるの?
375デフォルトの名無しさん (ワッチョイ 1302-dhUW)
2022/03/20(日) 12:55:28.41ID:DiBIkIVz0 windows.h
376デフォルトの名無しさん (スッップ Sd33-2DeC)
2022/03/20(日) 13:05:34.82ID:w4XPcyomd 使える標準ライブラリを聞いたつもりなんだが
あと<Windows.h>はOS依存のライブラリな
あと<Windows.h>はOS依存のライブラリな
377蟻人間 ◆T6xkBnTXz7B0 (スフッ Sd33-S5Ea)
2022/03/20(日) 13:25:28.64ID:y5NxTTYed 標準っていっても何の標準かわからん。
ANSI CとかC89とかあるだろ。
ANSI CとかC89とかあるだろ。
378デフォルトの名無しさん (スッップ Sd33-2DeC)
2022/03/20(日) 13:41:32.19ID:w4XPcyomd ANSI C, C89〜C17 の規格で存在を要求されてるライブラリ
組み込みコンパイラだとそもそもC89かC99しかサポートしてないだろうし、
fileIOとかは欠けてるだろうから何なら使えるか聞きたい
組み込みの環境も多数あるだろうから >>373 みたいな人が普段どういう関数使ってるか気になった
組み込みコンパイラだとそもそもC89かC99しかサポートしてないだろうし、
fileIOとかは欠けてるだろうから何なら使えるか聞きたい
組み込みの環境も多数あるだろうから >>373 みたいな人が普段どういう関数使ってるか気になった
379デフォルトの名無しさん (スッップ Sd33-kk3k)
2022/03/20(日) 13:42:12.13ID:e7HuEm7id それぞれ組み込むシステムに付属してるだろ
一元的な名前はない
ひょっとしたらstdio.hという名前かもしれない
一元的な名前はない
ひょっとしたらstdio.hという名前かもしれない
380デフォルトの名無しさん (ワッチョイ 13ad-bSSa)
2022/03/20(日) 14:14:31.30ID:4KnLtgrc0 組み込みって言っても小さくても Linux 動いちゃうようなのもあるし、何とも言えんな。
381デフォルトの名無しさん (アウアウウー Sa5d-63z5)
2022/03/20(日) 14:19:28.79ID:BOo0cJz/a string.h は普通に使えた
382はちみつ餃子 ◆8X2XSCHEME (ワッチョイ d93e-bSSa)
2022/03/20(日) 17:31:23.40ID:u4Grkyrm0 C の規格は「規格合致ホスト処理系」「規格合致フリースタンディング処理系」を規定していて、
フリースタンディング処理系はライブラリとして float.h iso646.h limits.h stdarg.h stdbool.h stddef.h stdint.h の内容に限定している。
この範囲なら実行環境に左右されずに用意できるはずという判断なんだろう。
フリースタンディング処理系はライブラリとして float.h iso646.h limits.h stdarg.h stdbool.h stddef.h stdint.h の内容に限定している。
この範囲なら実行環境に左右されずに用意できるはずという判断なんだろう。
383デフォルトの名無しさん (スッップ Sd33-2DeC)
2022/03/20(日) 19:31:33.68ID:w4XPcyomd 組み込み向けの最低限の規格があるのか
#defineとtypedefしかないが
なるほどこれなら環境がどんなにショボくても用意できそう
#defineとtypedefしかないが
なるほどこれなら環境がどんなにショボくても用意できそう
384デフォルトの名無しさん (ワッチョイ d9da-SQ3f)
2022/03/20(日) 20:07:23.09ID:mxx3UMQ+0 ファイルディスクリプタを使ってEOFを知りたいんだけどどうしたらいい?
普通にreadすりゃ0になるからわかるし、そもそもファイルなら
求めたサイズより小さく読めるからわかるけど
ちょうどぴったりでreadしたあとに、つぎのreadをせずに知りたい
feofとかファイルポインタだで使えんがや
普通にreadすりゃ0になるからわかるし、そもそもファイルなら
求めたサイズより小さく読めるからわかるけど
ちょうどぴったりでreadしたあとに、つぎのreadをせずに知りたい
feofとかファイルポインタだで使えんがや
385デフォルトの名無しさん (ブーイモ MM33-35g2)
2022/03/20(日) 20:57:34.02ID:cOd2oDpEM unblocking modeでopenしたfdをreadして判定すれば
386デフォルトの名無しさん (ワッチョイ 292c-kNuw)
2022/03/20(日) 22:28:44.17ID:aLyHOWc60 ファイルのサイズを取得して、そこへseek するとか?
そもそも、ファイルを開いて、ファイルの終わりにseek できるかも。
元々、ファイルの追記モードもあるぐらいだから
そもそも、ファイルを開いて、ファイルの終わりにseek できるかも。
元々、ファイルの追記モードもあるぐらいだから
387デフォルトの名無しさん (スップ Sd33-kk3k)
2022/03/20(日) 22:54:16.07ID:pl7vy6aed >ちょうどぴったりでreadしたあとに、つぎのreadをせずに知りたい
そもそもreadが終端まで来たらつぎにreadしてもファイルアクセスせずに0を返すから同じだろう
そもそもreadが終端まで来たらつぎにreadしてもファイルアクセスせずに0を返すから同じだろう
388デフォルトの名無しさん (ワッチョイ fb43-SD5K)
2022/03/20(日) 23:19:06.05ID:dAApHicf0389384 (ワッチョイ d9da-SQ3f)
2022/03/21(月) 16:21:59.97ID:nqBLTVDb0 >>387
後出し情報であれやけど
readしたデータをどこかに送信、最後のデータには最後フラグを立てる
みたいなやつなので、ぴったりのときに困ってたんよ
バッファを2面用意して、すぐ送信せず常に1回貯めて送信するのが
正解なんだろうなぁ・・・ まあいいけど
後出し情報であれやけど
readしたデータをどこかに送信、最後のデータには最後フラグを立てる
みたいなやつなので、ぴったりのときに困ってたんよ
バッファを2面用意して、すぐ送信せず常に1回貯めて送信するのが
正解なんだろうなぁ・・・ まあいいけど
390デフォルトの名無しさん (ワッチョイ 2910-tpIf)
2022/03/21(月) 17:02:36.51ID:geQt3ukX0 ファイルサイズと読み出し位置から残りサイズ計算するぐらいか?
391デフォルトの名無しさん (ドコグロ MM63-zKmY)
2022/03/21(月) 18:07:17.68ID:bPJRBgFUM >>389
ファイルサイズわかってるならlseek(fd, 0, SEEK_CUR) で現在位置調べりゃいいだけかと
ファイルサイズわかってるならlseek(fd, 0, SEEK_CUR) で現在位置調べりゃいいだけかと
392デフォルトの名無しさん (ワッチョイ d9da-SQ3f)
2022/03/21(月) 21:41:26.44ID:nqBLTVDb0 一応、ファイルじゃないときのことも考慮したかった
393デフォルトの名無しさん (スップ Sd73-2DeC)
2022/03/21(月) 22:38:50.94ID:j56ex+kVd ファイルディスクリプタが0とか"/dev/stdin"という名前のファイルを考慮し始めたらそれはもう無理じゃ?
394デフォルトの名無しさん (ワッチョイ 5336-yL30)
2022/03/21(月) 23:41:34.24ID:/12E7ImH0 なんかバグやセキュリティホールの温床になりそうだな。
395デフォルトの名無しさん (ワッチョイ 292c-kNuw)
2022/03/21(月) 23:55:00.11ID:avj/Dp0k0 キャッシュとか、同期・非同期処理とか、ブロックされる・されないとか、
ブロックデバイス・シーケンシャルかとか、リダイレクト・パイプとか、
共有の有無とか、メモリ内共有かどうかとか、
そんな事を考えだしたら、キリがない
なんせ、Linux API の7割は、IO の説明だから、10年以上掛かる
ブロックデバイス・シーケンシャルかとか、リダイレクト・パイプとか、
共有の有無とか、メモリ内共有かどうかとか、
そんな事を考えだしたら、キリがない
なんせ、Linux API の7割は、IO の説明だから、10年以上掛かる
396デフォルトの名無しさん (ワッチョイ 13ad-bSSa)
2022/03/22(火) 02:05:16.87ID:vyk85loe0 1バイト単位なら fdopen() しちゃって FILE * でバッファリングさせた方が楽だな。feof() も使えるし。
1バイト単位ではなく1000バイト単位とか、大きい塊でバッファリングする必要がある場合は自作して feof() みたいなチェックができるようにする。
(それでも FILE * でのバッファリングがあった方が遅いストレージにあるファイルなら読み出し効率上がると思うが)。
1バイト単位ではなく1000バイト単位とか、大きい塊でバッファリングする必要がある場合は自作して feof() みたいなチェックができるようにする。
(それでも FILE * でのバッファリングがあった方が遅いストレージにあるファイルなら読み出し効率上がると思うが)。
397デフォルトの名無しさん (ワッチョイ fb96-SjDQ)
2022/03/24(木) 22:37:34.92ID:jD8pMP9K0 以下はライブラリバージョンが1より大きければ処理を有効する例です
#if LIBRARY_VERSION > 1
…
#endif
この「LIBRARY_VERSION」は何者ですか?
どこに定義されているのでしょうか?
#if LIBRARY_VERSION > 1
…
#endif
この「LIBRARY_VERSION」は何者ですか?
どこに定義されているのでしょうか?
398デフォルトの名無しさん (ワッチョイ 8bbb-35g2)
2022/03/24(木) 23:58:11.94ID:ItLF0V9z0399デフォルトの名無しさん (ワッチョイ 29d2-2DeC)
2022/03/24(木) 23:59:45.82ID:bdM8JANZ0 MSVC環境ならカーソル合わせてF12キー押せばいい
gccとかは知らん
gccとかは知らん
400デフォルトの名無しさん (ワッチョイ 7b7b-kNuw)
2022/03/25(金) 00:14:08.19ID:sET9XTXv0 >>397
独習Cからの抜粋と予想して記載します
複数の開発環境で同じヘッダファイルを使用する際の
ライブラリバージョンの差異でエラーとなるのを防ぐための
テクニックです
各自が自分の開発環境に合わせて
#define LIBRARY_VERSION 1などと
定義する必要があります
独習Cからの抜粋と予想して記載します
複数の開発環境で同じヘッダファイルを使用する際の
ライブラリバージョンの差異でエラーとなるのを防ぐための
テクニックです
各自が自分の開発環境に合わせて
#define LIBRARY_VERSION 1などと
定義する必要があります
401デフォルトの名無しさん (スップ Sd33-Dya/)
2022/03/25(金) 06:50:38.08ID:0hAphrOld いえ、それはそのライブラリの作者(メンテナンスしてる人)が標準ヘッダ内で定義すべき内容です
ユーザーは>>397を自分のファイル内で使用してバージョンの差異を吸収できます
ユーザーは>>397を自分のファイル内で使用してバージョンの差異を吸収できます
402デフォルトの名無しさん (ワッチョイ 3696-VQaK)
2022/03/26(土) 01:22:16.42ID:EYuSPLit0403デフォルトの名無しさん (ワッチョイ 3696-DtE+)
2022/03/26(土) 16:05:05.08ID:EYuSPLit0 コンパイル(リンク)時に、同じプロジェクト内の別ソースの関数などを呼び出せるのはなぜ?
インクルードして教えてる訳でもないのに、もしかして全ソースを探しに行ってるんですか?
インクルードして教えてる訳でもないのに、もしかして全ソースを探しに行ってるんですか?
404デフォルトの名無しさん (ワッチョイ b1d2-JyYd)
2022/03/26(土) 17:27:18.26ID:T/pJeR6z0 全ソースから探し出すのがリンク
includeとかで関数宣言だけは見えるようにする必要はあるが。
main.c
-----------
char* func(int size);
int main(){
char* p=func(16);
}
-----------
funcという名前の関数は、
前方宣言(1行目)してるのでリンク時に探しに行く。
リンク時の解決用に定義した関数(とその実装)を.objファイルに一覧としてまとめる。
リンクという作業では、.objと.libと.dllから"func"という名前の関数を探し出す。
見つからなかったり2つ以上見つかったらリンクエラーになる。
古いCだと前方宣言がなければ int func(); 決め打ちで前方宣言扱いしたりする。
includeとかで関数宣言だけは見えるようにする必要はあるが。
main.c
-----------
char* func(int size);
int main(){
char* p=func(16);
}
-----------
funcという名前の関数は、
前方宣言(1行目)してるのでリンク時に探しに行く。
リンク時の解決用に定義した関数(とその実装)を.objファイルに一覧としてまとめる。
リンクという作業では、.objと.libと.dllから"func"という名前の関数を探し出す。
見つからなかったり2つ以上見つかったらリンクエラーになる。
古いCだと前方宣言がなければ int func(); 決め打ちで前方宣言扱いしたりする。
405デフォルトの名無しさん (スップ Sdb2-iclU)
2022/03/26(土) 18:26:49.41ID:kmPIEuI7d >>403
(古典的な)Cではアセンブラソースに変換してアセンブル→リンクされるが
通常の関数名や変数名はアセンブラのグローバルシンボルに変換され
リンク時に他のアセンブラソースから参照できるようになる
一方関数内のローカル変数やstatic宣言された関数や変数はローカルシンボルとして扱われ他のアセンブラソースからは参照できなくなる
(古典的な)Cではアセンブラソースに変換してアセンブル→リンクされるが
通常の関数名や変数名はアセンブラのグローバルシンボルに変換され
リンク時に他のアセンブラソースから参照できるようになる
一方関数内のローカル変数やstatic宣言された関数や変数はローカルシンボルとして扱われ他のアセンブラソースからは参照できなくなる
406デフォルトの名無しさん (ワッチョイ 3696-DtE+)
2022/03/26(土) 23:45:36.64ID:EYuSPLit0 よく分かりました、ありがとうございました
407デフォルトの名無しさん (ワッチョイ 3696-VQaK)
2022/03/27(日) 21:02:14.58ID:angONFKk0 グローバル変数の修飾子の意味は次の意味で合っているでしょうか?
修飾子なし:変数の実体を定義
extern修飾子:定義済みの変数を参照する
static修飾子:変数の実体を定義して、その変数を他のファイルからexternさせない
修飾子なし:変数の実体を定義
extern修飾子:定義済みの変数を参照する
static修飾子:変数の実体を定義して、その変数を他のファイルからexternさせない
408デフォルトの名無しさん (ワッチョイ b110-VQaK)
2022/03/28(月) 11:08:20.21ID:c4HYTfCO0 適当にググって見つかったexternとstaticの解説
ttps://daeudaeu.com/extern/
ttps://daeudaeu.com/static/
ttps://daeudaeu.com/extern/
ttps://daeudaeu.com/static/
409デフォルトの名無しさん (ワッチョイ 55c7-DtE+)
2022/03/29(火) 00:24:04.59ID:c+1KPnOj0410デフォルトの名無しさん (スップ Sdb2-iclU)
2022/03/29(火) 06:11:36.84ID:7UUvIzLId そんなに信用されてもw
411デフォルトの名無しさん (ワッチョイ b110-UE6D)
2022/03/29(火) 08:18:01.14ID:C0VnxRTv0 自分で色々なパターンでコンパイルして確認しないのかな?って思う。
412デフォルトの名無しさん (スッップ Sdb2-JyYd)
2022/03/29(火) 08:55:46.71ID:tKmNrPY6d413デフォルトの名無しさん (ドコグロ MM96-XX5V)
2022/03/29(火) 13:03:41.11ID:M0Gs9C4cM llvm-14 の、ソースツリーの外にcmake ディレクトリができる下品な感じ、なんとかならないの?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 空自機レーダー照射、音声データ公開 中国 ★3 [蚤の市★]
- 一律現金給付も消費減税もなし 高市内閣の経済対策に割れる世論 [蚤の市★]
- 日銀「歴史的」利上げ迫る 35年ぶりの年間上げ幅、0.5%の壁を突破 [蚤の市★] [蚤の市★]
- 津波警報の発表中にグーグル検索、AIが「すべて解除」と誤情報 [蚤の市★]
- 【YouTuber】バイク事故で入院のゆたぼん、振込で「お見舞金」募る [muffin★]
- 低所得層のマクドナルド離れが深刻に 広がる「ファストフード格差」の真相 米国 [少考さん★]
- 【実況】博衣こよりのえちえち朝活🧪 2
- 【実況】博衣こよりのえちえち朝活🧪
- 【高市悲報】日本人のTikTokアカウントが続々収益化剥奪中!!乞食どもざまああああああああwwwwwww [394917828]
- ネトウヨ「中国は政府が人民に金使って世論操作のヤラセ書き込みをさせている国。」 [153490809]
- 残クレマイホーム爆誕 [715715613]
- 寒すぎるんだが
