[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 02/22 11:29 / Filesize : 258 KB / Number-of Response : 1018
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語なら俺に聞け 158



1 名前:デフォルトの名無しさん mailto:sage [2021/12/25(土) 12:11:46.61 ID:xxeaCAplM.net]
!extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください)
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
codepad.org/

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

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

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

C FAQ 日本語訳
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

331 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 00:27:55.58 ID:8TmiOcWs0.net]
上級国民は医師に運転を止められていた欠陥アプリなので、譬喩に用いるには特殊すぐる。

332 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 00:30:40.49 ID:giayljWn0.net]
事故起こした奴って自分が原因だと思ってないだろう

333 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 06:05:08.20 ID:g8VV1ENe0.net]
常に自分を疑え、なんて根性論めいた主張には興味ないし
弁護士に譲歩的なことを言うなと指示されて本当に思っていることと違うことを陳述するのもこの議論とは関係ない

334 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 06:10:49.96 ID:kdm08K3Td.net]
>>308
多用、ってのがおかしいな
一ヶ月も動かし続けてたらどうしても多用になる
それで落ちるようなことはWin95とかの時代の話だろ

335 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 11:39:10.82 ID:HQz48e8Z0.net]
>>308
malloc,freeを多用すると
解放し忘れが多くなり
メモリが断片化して
新規メモリが確保できなくなってエラー吐いてんのに
エラーチェックもせずにポインターにアクセス
そしてプログラムが落ちる
さらにOSを巻き込んでPCごと落ちる

でも今時のOSは生半可なことでは巻き込まれない

336 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 17:40:39.42 ID:5qwn5s+60.net]
解放し忘れ(メモリリーク)と断片化は別概念

16byteを4回確保した後に1回目と3回目で確保したメモリだけ解放すると、
合計32byte空いてるのに飛び地になってるから32byte領域として扱えない

337 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 22:53:37.11 ID:A2eUK16/a.net]
malloc/freeを多用すると解放忘れが多くなるものなのか?

338 名前:デフォルトの名無しさん mailto:sage [2022/03/14(月) 01:27:18.72 ID:OOlFm33n0.net]
そりゃプログラムがおかしいだけ

339 名前:デフォルトの名無しさん mailto:sage [2022/03/14(月) 10:46:27.63 ID:z8DyGqYY0.net]
C言語ではなくスクリプトだが、
無限にSubdirを掘り続ける奴書いて動かしたら、OS落ちたな
XPだったが



340 名前:デフォルトの名無しさん mailto:sage [2022/03/14(月) 11:00:21.69 ID:GQP59fXj0.net]
fork爆弾みたいな実験か

341 名前:デフォルトの名無しさん mailto:sage [2022/03/14(月) 16:40:21.91 ID:LP3GQSIPd.net]
OS名はあえて書かないが
Visual C++のmallocで1GBを256回確保しただけで落ちたな

342 名前:デフォルトの名無しさん [2022/03/14(月) 17:46:29.09 ID:OOlFm33n0.net]
Windowsは昔から落ちやすい印象
なんというか、OS自体もなんか少しユルい上にみんなして色んなドライバ作って組み込むもんだから余計に落ち易くなってんじゃないかな。

343 名前:デフォルトの名無しさん mailto:sage [2022/03/14(月) 17:51:09.33 ID:L/zgcwZ50.net]
Win98で512バイトぐらいをいくつmalloc出来るかと試したことがあって、
10万回ちかくでNULL返した・・・いや、1万回だったかな?。
とりあえずOSもアプリも落ちなかった。

344 名前:デフォルトの名無しさん [2022/03/15(火) 21:09:49.60 ID:uaV7elHUM.net]
>>249
教えられてないし誰も知らないしwhile(1)で事足りるから
::printfとかもな
わざわざ使ってるやつはアホだと思う

345 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 21:12:16.49 ID:oV08M4Ak0.net]
あなたの基準では世界中アホだらけやな

346 名前:デフォルトの名無しさん [2022/03/15(火) 21:19:55.67 ID:uaV7elHUM.net]
一部のバカに対して言ってる
マジで::printfなんて使ってるやつなんて滅多にいない

347 名前:デフォルトの名無しさん [2022/03/15(火) 21:22:08.63 ID:uaV7elHUM.net]
誰も使ってない表記法使うアホのせいで改めて調べないといけなくなる
使われてないから敢えて教科書に書かれてないし教科書に書かれてないんだから知らないやつが多数派ってことがわからんバカ

348 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 00:50:46.44 ID:HRRT9pv8r.net]
知らなくて馬鹿にされたのかな?辛かったね、大変だったね。カワイソウニ(´;ω;`)ウッ…

349 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 05:23:40.43 ID:sZ1wd+Ly0.net]
有効範囲解決演算子はスレ違いだぞ



350 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 13:21:40.48 ID:IYkrMFX0r.net]
Cに namespace の概念ってある?

351 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 13:45:31.87 ID:EozDCnXud.net]
gotoラベル
構造体のtag名
構造体のメンバ名
それ以外

という概念のnamespaceならある

typedef struct A{int A;} A;
int main(){ A: return 0;}

で4種類のAを区別できるというだけで、ns::A とかの話ではないが

352 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 14:57:34.41 ID:IYkrMFX0r.net]
ああ
それぞれで固有の識別子を記憶する空間があるから ぱっとみの文字が衝突しててもセーフ
という概念か

コンパイラ記述するときにめんどくさそうね
文意からこっちのテーブルを参照すべきとか

353 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 11:24:46.11 ID:fvSihUDg0.net]
初歩的な質問ですが、
b = a++;
という式はbにaの値を代入してからaをプラス1しますが、
演算子の優先度を考えると、++が優先度高く、=は右優先です

優先度の高い++をしてから代入するように感じるのですが
そうならない理由をご教示ください

354 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 11:57:41.89 ID:VgIBj69P0.net]
a++が返す値は、aをインクリメントする前の値だからだよ

355 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 12:07:43.36 ID:X795CU5ld.net]
b=a++;
のインクリメントが実行されるのは式を評価した後

356 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 12:40:35.63 ID:fvSihUDg0.net]
返信ありがとうございます
演算子の優先度を調べると++が=より優先度が高いはずです
式の処理は優先度の高い演算子から処理されると理解しています

そうすると、++が先に実行された後で=(代入)が実行されてもおかしくないと
考えたのですが、どこに誤りがあるのでしょうか?

357 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 12:53:26.53 ID:UXt2lmR80.net]
そういう時のために
++i
i++
ちゃんと2種類の書き方が用意されてるんだよ

358 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 12:55:08.49 ID:d0FibUHe0.net]
>>351
> 式の処理は優先度の高い演算子から処理されると理解しています
これが間違い。演算子の結合優先度と式の評価順は別。

359 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 12:56:54.66 ID:X795CU5ld.net]
演算子の結合順位と副作用完了点の概念は別

というか b=a;a=a+1; を1文で書くためにa++ 周りのの仕様を特別扱いして実現してる



360 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 13:30:03.55 ID:fvSihUDg0.net]
返信ありがとうございます
++、--の場合は、前置、後置で
式の評価順が通常と異なると覚えました

式の評価順を理論から理解していないので
忘れてしまって失敗するかもしれませんが、
そのうち定着すると思っています

361 名前:デフォルトの名無しさん [2022/03/19(土) 15:38:29.74 ID:CZI3HevE0.net]
よくわからない場合や使うと分かり辛くなる場合は使わないで冗長な書き方した方が良いかも知れない。
使わなくても最近のコンパイラは最適化掛ければ適当にうまいことやって最終的に作られるコードは同じになる可能性が高いと思う。

362 名前:デフォルトの名無しさん [2022/03/19(土) 17:00:25.72 ID:mw5TX/57a.net]
b = a++;

の右辺を評価した結果は aの元の値で、副作用として aのアドレスにあるオブジェクトをインクリメントしているのでは
代入されるのは aの内容でなく、アドレスを持たない値で

363 名前:デフォルトの名無しさん [2022/03/19(土) 17:03:51.29 ID:mw5TX/57a.net]
a++ は右辺値で、 ++a は左辺値

364 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 17:12:51.80 ID:X795CU5ld.net]
どっちも右辺値としないとまずい
int main(){
int a=0;
int* p;
p=&(++a); // コンパイルエラー
p=&(a++); // こっちも
}

365 名前:デフォルトの名無しさん [2022/03/19(土) 17:42:57.61 ID:mw5TX/57a.net]
そうだね、失礼しました

366 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 17:50:05.80 ID:nPptgbtB0.net]
: BassClass(
std::format (IdPrefix, index, numBank)),(
std::format (NamePrefix, ++index, numBank))
ちょうどこんな感じのコンストラクタでラッパーするコード書いてたんだけど
インクリメントしてない方までつられて増えちゃうんだよね
C++のコード片でスマソン

367 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 18:11:19.38 ID:8Fsv/onud.net]
d = ++a + b-- + --c + a++;
この結果は

++a;
--c;
d = a + b + c + a;
b--;
a++;
だよね
実際はこんな書き方しないほうがいいがw

368 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 18:25:12.86 ID:d0FibUHe0.net]
>>362
> d = ++a + b-- + --c + a++;
> この結果は
++a と a++ とが順序付けされないので未定義動作。

369 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 18:39:08.49 ID:Uza1/JxDM.net]
両方未定義じゃね?
>>361 の方はちょっと自信ないが >>362 の ++a + a++ はダメだったような気がする



370 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 19:05:15.57 ID:9SMEw2CG0.net]
以下のような関数がインラインで実行されてるだけで、評価自体は++が先に行われてるんでないの?知らんけど
int inc(int* a) {
int ret = *a;
*a = *a + 1;
return ret;
}

371 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 19:10:54.79 ID:fJWxsuK3a.net]
引数の評価順なんてCPUでも変わるだろ。

372 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 20:25:22.26 ID:hj0ig94x0.net]
未定義動作警察だ!

未定義動作の動作は定義されていないのでコンパイラは何をしてもいい

> d = ++a + b-- + --c + a++;
このコードの場合、
++a;--c;d=...; b--;a++;相当のコードを吐いてもいいし、
tmp=a;a=tmp+1;--c;d=...; b--;a=tmp+1; 相当のコードを吐いてもいい。
大抵は未定義動作がないことを前提に最適化をかけるが。

極端なことを言えば、d=42としてもいい。
この文の見た目の動作は定義されていないから

373 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 00:26:15.18 ID:dAApHicf0.net]
fgetsのファイル終了・エラー時の戻り値がNULLなのはなぜですか?
他の入出力関係の関数の戻り値はEOFになっています
いま入出力の勉強をしてるんですが、関数の引数や戻り値が少しずつ違うので覚えるのが難しいです
使っていくうちに覚えていくものでしょうか?

374 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 00:53:13.92 ID:tmhbCmKs0.net]
細かな仕様はよく使うもの以外は毎度調べるよ
まあCの関数は数が少ないから全部覚えてるって人も少なくないかも

375 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 00:57:50.69 ID:rKPZjyik0.net]
よく使う関数の戻り値調べると面白いぞ
printfが何を返しているかとか、それは何故なのかとか
戻り値を使っている人を見たことがないけれど

376 名前:はちみつ餃子 mailto:sage [2022/03/20(日) 01:37:41.92 ID:u4Grkyrm0.net]
>>361
こういう場合については未定義ではないが未規定の動作が含まれる。
副作用完了点の間で同一のオブジェクトに複数回の書き換えが生じた場合には未定義の動作となるが、
書き換えが一度の場合はその書き換えがどのタイミングで起こるかわからないというだけで、
未定義の挙動にはならない。

377 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 08:21:37.14 ID:e7HuEm7id.net]
>>368
fgetsの戻り値は文字列へのポインタであり
いっぽうEOFは文字(じゃなくてintだけど気分的には)なのだ

378 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 10:46:46.29 ID:+oGVYZOT0.net]
組み込みのソフトしていると
使わない関数が多くて忘れていきます

379 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 11:48:15.83 ID:w4XPcyomd.net]
<stdio.h>は使えないとして組み込み系って使える標準ライブラリあるの?



380 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 12:55:28.41 ID:DiBIkIVz0.net]
windows.h

381 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 13:05:34.82 ID:w4XPcyomd.net]
使える標準ライブラリを聞いたつもりなんだが
あと<Windows.h>はOS依存のライブラリな

382 名前:蟻人間 mailto:sage [2022/03/20(日) 13:25:28.64 ID:y5NxTTYed.net]
標準っていっても何の標準かわからん。
ANSI CとかC89とかあるだろ。

383 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 13:41:32.19 ]
[ここ壊れてます]

384 名前:ID:w4XPcyomd.net mailto: ANSI C, C89〜C17 の規格で存在を要求されてるライブラリ

組み込みコンパイラだとそもそもC89かC99しかサポートしてないだろうし、
fileIOとかは欠けてるだろうから何なら使えるか聞きたい

組み込みの環境も多数あるだろうから >>373 みたいな人が普段どういう関数使ってるか気になった
[]
[ここ壊れてます]

385 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 13:42:12.13 ID:e7HuEm7id.net]
それぞれ組み込むシステムに付属してるだろ
一元的な名前はない
ひょっとしたらstdio.hという名前かもしれない

386 名前:デフォルトの名無しさん [2022/03/20(日) 14:14:31.30 ID:4KnLtgrc0.net]
組み込みって言っても小さくても Linux 動いちゃうようなのもあるし、何とも言えんな。

387 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 14:19:28.79 ID:BOo0cJz/a.net]
string.h は普通に使えた

388 名前:はちみつ餃子 mailto:sage [2022/03/20(日) 17:31:23.40 ID:u4Grkyrm0.net]
C の規格は「規格合致ホスト処理系」「規格合致フリースタンディング処理系」を規定していて、
フリースタンディング処理系はライブラリとして float.h iso646.h limits.h stdarg.h stdbool.h stddef.h stdint.h の内容に限定している。
この範囲なら実行環境に左右されずに用意できるはずという判断なんだろう。

389 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 19:31:33.68 ID:w4XPcyomd.net]
組み込み向けの最低限の規格があるのか

#defineとtypedefしかないが
なるほどこれなら環境がどんなにショボくても用意できそう



390 名前:デフォルトの名無しさん [2022/03/20(日) 20:07:23.09 ID:mxx3UMQ+0.net]
ファイルディスクリプタを使ってEOFを知りたいんだけどどうしたらいい?

普通にreadすりゃ0になるからわかるし、そもそもファイルなら


391 名前:求めたサイズより小さく読めるからわかるけど
ちょうどぴったりでreadしたあとに、つぎのreadをせずに知りたい
feofとかファイルポインタだで使えんがや
[]
[ここ壊れてます]

392 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 20:57:34.02 ID:cOd2oDpEM.net]
unblocking modeでopenしたfdをreadして判定すれば

393 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 22:28:44.17 ID:aLyHOWc60.net]
ファイルのサイズを取得して、そこへseek するとか?

そもそも、ファイルを開いて、ファイルの終わりにseek できるかも。
元々、ファイルの追記モードもあるぐらいだから

394 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 22:54:16.07 ID:pl7vy6aed.net]
>ちょうどぴったりでreadしたあとに、つぎのreadをせずに知りたい

そもそもreadが終端まで来たらつぎにreadしてもファイルアクセスせずに0を返すから同じだろう

395 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 23:19:06.05 ID:dAApHicf0.net]
>>372
よく分かりました
ありがとうございます

396 名前:384 mailto:sage [2022/03/21(月) 16:21:59.97 ID:nqBLTVDb0.net]
>>387
後出し情報であれやけど
readしたデータをどこかに送信、最後のデータには最後フラグを立てる
みたいなやつなので、ぴったりのときに困ってたんよ

バッファを2面用意して、すぐ送信せず常に1回貯めて送信するのが
正解なんだろうなぁ・・・ まあいいけど

397 名前:デフォルトの名無しさん [2022/03/21(月) 17:02:36.51 ID:geQt3ukX0.net]
ファイルサイズと読み出し位置から残りサイズ計算するぐらいか?

398 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 18:07:17.68 ID:bPJRBgFUM.net]
>>389
ファイルサイズわかってるならlseek(fd, 0, SEEK_CUR) で現在位置調べりゃいいだけかと

399 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 21:41:26.44 ID:nqBLTVDb0.net]
一応、ファイルじゃないときのことも考慮したかった



400 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 22:38:50.94 ID:j56ex+kVd.net]
ファイルディスクリプタが0とか"/dev/stdin"という名前のファイルを考慮し始めたらそれはもう無理じゃ?

401 名前:デフォルトの名無しさん [2022/03/21(月) 23:41:34.24 ID:/12E7ImH0.net]
なんかバグやセキュリティホールの温床になりそうだな。

402 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 23:55:00.11 ID:avj/Dp0k0.net]
キャッシュとか、同期・非同期処理とか、ブロックされる・されないとか、
ブロックデバイス・シーケンシャルかとか、リダイレクト・パイプとか、
共有の有無とか、メモリ内共有かどうかとか、

そんな事を考えだしたら、キリがない

なんせ、Linux API の7割は、IO の説明だから、10年以上掛かる

403 名前:デフォルトの名無しさん [2022/03/22(火) 02:05:16.87 ID:vyk85loe0.net]
1バイト単位なら fdopen() しちゃって FILE * でバッファリングさせた方が楽だな。feof() も使えるし。
1バイト単位ではなく1000バイト単位とか、大きい塊でバッファリングする必要がある場合は自作して feof() みたいなチェックができるようにする。
(それでも FILE * でのバッファリングがあった方が遅いストレージにあるファイルなら読み出し効率上がると思うが)。

404 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 22:37:34.92 ID:jD8pMP9K0.net]
以下はライブラリバージョンが1より大きければ処理を有効する例です
#if LIBRARY_VERSION > 1

#endif

この「LIBRARY_VERSION」は何者ですか?
どこに定義されているのでしょうか?

405 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 23:58:11.94 ID:ItLF0V9z0.net]
>>397
少なくとも標準仕様ではどこにも定義されてないです
説明のための例では?

406 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 23:59:45.82 ID:bdM8JANZ0.net]
MSVC環境ならカーソル合わせてF12キー押せばいい

gccとかは知らん

407 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 00:14:08.19 ID:sET9XTXv0.net]
>>397
独習Cからの抜粋と予想して記載します

複数の開発環境で同じヘッダファイルを使用する際の


408 名前:宴Cブラリバージョンの差異でエラーとなるのを防ぐための
テクニックです

各自が自分の開発環境に合わせて
#define LIBRARY_VERSION 1などと
定義する必要があります
[]
[ここ壊れてます]

409 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 06:50:38.08 ID:0hAphrOld.net]
いえ、それはそのライブラリの作者(メンテナンスしてる人)が標準ヘッダ内で定義すべき内容です
ユーザーは>>397を自分のファイル内で使用してバージョンの差異を吸収できます



410 名前:デフォルトの名無しさん [2022/03/26(土) 01:22:16.42 ID:EYuSPLit0.net]
>>398,400,401
説明のための例のようですね、失礼しました
あと、この定数が未定義の場合の値は0になるのですね
そのあたりを理解していませんでした
どうもありがとうございました

411 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 16:05:05.08 ID:EYuSPLit0.net]
コンパイル(リンク)時に、同じプロジェクト内の別ソースの関数などを呼び出せるのはなぜ?
インクルードして教えてる訳でもないのに、もしかして全ソースを探しに行ってるんですか?

412 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 17:27:18.26 ID:T/pJeR6z0.net]
全ソースから探し出すのがリンク
includeとかで関数宣言だけは見えるようにする必要はあるが。

main.c
-----------
char* func(int size);
int main(){
char* p=func(16);
}
-----------

funcという名前の関数は、
前方宣言(1行目)してるのでリンク時に探しに行く。

リンク時の解決用に定義した関数(とその実装)を.objファイルに一覧としてまとめる。

リンクという作業では、.objと.libと.dllから"func"という名前の関数を探し出す。
見つからなかったり2つ以上見つかったらリンクエラーになる。

古いCだと前方宣言がなければ int func(); 決め打ちで前方宣言扱いしたりする。

413 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 18:26:49.41 ID:kmPIEuI7d.net]
>>403
(古典的な)Cではアセンブラソースに変換してアセンブル→リンクされるが
通常の関数名や変数名はアセンブラのグローバルシンボルに変換され
リンク時に他のアセンブラソースから参照できるようになる
一方関数内のローカル変数やstatic宣言された関数や変数はローカルシンボルとして扱われ他のアセンブラソースからは参照できなくなる

414 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 23:45:36.64 ID:EYuSPLit0.net]
よく分かりました、ありがとうございました

415 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 21:02:14.58 ID:angONFKk0.net]
グローバル変数の修飾子の意味は次の意味で合っているでしょうか?

修飾子なし:変数の実体を定義
extern修飾子:定義済みの変数を参照する
static修飾子:変数の実体を定義して、その変数を他のファイルからexternさせない

416 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 11:08:20.21 ID:c4HYTfCO0.net]
適当にググって見つかったexternとstaticの解説

ttps://daeudaeu.com/extern/
ttps://daeudaeu.com/static/

417 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 00:24:04.59 ID:c+1KPnOj0.net]
>>408
そのサイト含めいろいろ見て、それをまとめたのが>>407です
念のためどなたかに確認していただこうかと思って書き込みました

418 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 06:11:36.84 ID:7UUvIzLId.net]
そんなに信用されてもw

419 名前:デフォルトの名無しさん [2022/03/29(火) 08:18:01.14 ID:C0VnxRTv0.net]
自分で色々なパターンでコンパイルして確認しないのかな?って思う。



420 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 08:55:46.71 ID:tKmNrPY6d.net]
正確な意味を知るには解説サイト見て回るより規格書見るほうがいい

real-c.info/indexDesc.html

421 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 13:03:41.11 ID:M0Gs9C4cM.net]
llvm-14 の、ソースツリーの外にcmake ディレクトリができる下品な感じ、なんとかならないの?

422 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 15:17:04.78 ID:X58TTE+20.net]
>>413
cloneしたディレクトリの直下にbuildディレクトリ作ってそこでcmake 〜 ../llvmじゃいかんの?
今どきソースのディレクトリで直接ビルドしないのは下品というより上品ではないですか

423 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 18:15:06.70 ID:U1DxU1KgM.net]
>>414
>ソースツリーの外に

下品

424 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 18:20:46.45 ID:1zZAboUWM.net]
ソースツリーの中にbuildフォルダ作るのは上品なん?

425 名前:はちみつ餃子 mailto:sage [2022/03/29(火) 18:47:55.98 ID:4oPH291+0.net]
autotools でも out-of-tree build は出来るようにするのが一般的な作法。
あらゆるプロジェクトでそうしているというほどではないと思うけど、ごく普通にある。

426 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 22:23:02.11 ID:X58TTE+20.net]
https://llvm.org/docs/CMake.html を見るとソースフォルダの外でビルドしなきゃいけないような感じに書いてあるけど、
https://clang.llvm.org/get_started.html を見るとリポジトリ直下にbuild作ってそこでビルドすればいいように書いてあるから、llvmはお上品にビルドできるのですわ

427 名前:デフォルトの名無しさん mailto:sage [2022/04/01(金) 12:18:00.47 ID:BXJ/mUbsM.net]
llvm-14
まだゴミw
色んなものがダメになるw

428 名前:デフォルトの名無しさん (ワッチョイ 6fb3-7L1B) mailto:sage [2022/04/12(火) 19:31:59 ID:B1tFLWvv0.net]
char buf[256];
memset(buf, NULL, sizeof(buf));・・・(1)
memset(buf, 0, sizeof(buf));・・・(2)

(1)と(2)同じ事をしていると思うのですが、どっちで記述するのがメジャーですか?

429 名前:蟻人間 ◆T6xkBnTXz7B0 (スフッ Sd02-qTly) mailto:sage [2022/04/12(火) 19:35:46 ID:Dt0TGPDOd.net]
NULLはポインタだから(2)が正しいよ。



430 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ a23e-vtdv) mailto:sage [2022/04/12(火) 20:06:33 ID:5njWaFr40.net]
>>420
言語仕様に厳密にいうと前者で初期化しようとした場合に buf が 0 で初期化されることは保証されないし、
コンパイルエラーになることもありうる。

整数定数式の 0 がポインタに変換したときに空ポインタになることは保証されるので
NULL が単に #define NULL 0 として定義している環境もよくあるんだが、
仕様上の NULL は「処理系定義の空ポインタ定数に展開する」ということになっていて
整数の 0 を書ける文脈に NULL を書いて通るとは限らないんだ。

そんで「整数定数式の 0」がポインタに変換されたときに空ポインタになることは保証されるが、
定数式ではない文脈での整数の 0 は空ポインタになることは保証されていないし、
逆に空ポインタを整数に変換したときに 0 であるとも限らない。
if 文などの制御式としてポインタを置いても問題ないのは C の制御式は !=0 が補われたかのように動作するというルールのおかげ。

431 名前:デフォルトの名無しさん (ワッチョイ 6fb3-7L1B) mailto:sage [2022/04/12(火) 20:07:57 ID:B1tFLWvv0.net]
>>421-422
お早いレスサンクス
わかりました

432 名前:ハノン mailto:sage [2022/04/20(水) 22:16:48.28 ID:vxzn/db60.net]
>>422
>整数の 0 を書ける文脈に NULL を書いて通るとは限らないんだ。
可変長引数にあるあるの最後に (char *)0 (なんで char * なんだ?)なんかがいい例ですね

433 名前:デフォルトの名無しさん (ワッチョイ 97b3-4qoo) mailto:sage [2022/04/22(金) 15:01:50 ID:YxI2bgUE0.net]
(ソースtt.c)
#include <stdio.h>
#include <math.h>

void main()
{
double d;
int a;

d = 1.234;
a = round(d);
printf("%d\n", a);
}

$gcc tt.c
/tmp/cc0NPwg6.o: 関数 `main' 内:
tt.c:(.text+0x23): `round' に対する定義されていない参照です
collect2: error: ld returned 1 exit status

こんな短いソースなのに解決できない。助けてー(´・ω・`)
OSはLinuxです

434 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 15:04:48.71 ID:SxzvmxoM0.net]
どうせリンクしてないとかそんなんだろ

435 名前:蟻人間 mailto:sage [2022/04/22(金) 15:05:51.08 ID:BJPJNuGwd.net]
>>425
古いコンパイラにはroundがないかもしれない。

436 名前:蟻人間 mailto:sage [2022/04/22(金) 15:06:16.30 ID:BJPJNuGwd.net]
-lm

437 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 15:12:16.74 ID:SxzvmxoM0.net]
gccなら -lmで動的リンクする簡易オプションがある、プログラム内だけで完結したいならコンパイラ付属のmathライブラリのソースも含めてコンパイル

438 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 15:14:29.72 ID:SxzvmxoM0.net]
動的リンクだとmathは浮動小数点の扱いが実行環境に依存するので静的リンク推奨

439 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 15:26:22.00 ID:YxI2bgUE0.net]
ありがとう
gcc tt.c -lm
でコンパイル通りました。



440 名前:デフォルトの名無しさん (スププ Sdbf-DCm/) mailto:sage [2022/04/22(金) 15:44:53 ID:I04xh82td.net]
割とよく使う標準ライブラリなのに一々リンク方法をユーザーに選択させるという事の意義を考えるように、おまじないじゃないぞ

441 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 17:13:59.15 ID:RFW8R+x+d.net]
roundかtruncかfloorかはたまたceilかもしれないrintとその一味のヤバいやつら
こんなもんさっさと追放しろよ

442 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 17:31:11.41 ID:SxzvmxoM0.net]
整数型で表せない整数をdoubleで表したい時も稀にある
どうせ前後の整数(±1)は表せない不連続すきっ歯領域だし、どう丸まろうが影響無い部分だよ、って意図の明示に

443 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 17:49:02.83 ID:SxzvmxoM0.net]
用途は思い浮かばないでもないが、適切に使われてないケースが多分99%

444 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 13:45:19.22 ID:+Gd9xYyP0.net]
表せないときは整数型多倍長処理作る

445 名前:デフォルトの名無しさん [2022/04/24(日) 11:54:23.21 ID:S9c+iUdl0.net]
GMPでそ
C++じゃないとちょっと使いにくいけど

446 名前:デフォルトの名無しさん (ワッチョイ 51e6-DWDP) mailto:sage [2022/04/24(日) 15:18:10 ID:Qwrn6LYl0.net]
>>437
激しく同意
https://mevius.5ch.net/test/read.cgi/tech/1434079972/84

447 名前:デフォルトの名無しさん (スフッ Sd94-6n8/) mailto:sage [2022/04/25(月) 03:24:41 ID:LAuA6+3Dd.net]
多倍長整数とか言ってる人は意図汲めてなくね?

正確性も表現力も不要だけど、それでも整数に相当する巨大数が要るのは極を利用した求根アルゴリズム(方程式解法)とかでしょうよ

たとえば、求めたい関数fの根がその逆数関数1/fの極と等しい事を利用するとか

もしdoubleの範囲を多倍長整数/任意桁数演算で308桁を陽に扱必要があるけど、そもそも極判定は指数部のみで行えるわけで、各桁の数字を陽に保持する意味が無い


一方で指数が巨大なdoubleを生で足すのは悪手
丸めれば各々の積分経路での評価値は真値から一旦遠ざかるけど、一貫した丸めを行う限りは10000万回も足せば互いに相殺されて均される

448 名前:デフォルトの名無しさん mailto:sage [2022/04/25(月) 03:38:21.89 ID:LAuA6+3Dd.net]
ちょっと拵えすぎたような設定だったかもしれないけど、300桁を陽に保持して、ハードウェアの恩恵も無しに一万回加算とか、向かないどころかあまりにも非現実的過ぎる例もある
という例程度に

あとdouble使ってればinfが返ってくる可能性があるのが最大の利点
もしinfを引き当てられれば、それを与正入力がその浮動小数点実装における最高精度の解だと理論的に保証される

449 名前:デフォルトの名無しさん mailto:sage [2022/04/25(月) 03:44:18.07 ID:LAuA6+3Dd.net]
訂正と補足
それを与正→与えた入力

(1/f)(x)→inf

f(x) → 0

fの根はそのx
は論理的に同値



450 名前:デフォルトの名無しさん mailto:sage [2022/04/25(月) 05:05:51.34 ID:ueJIdSJ50.net]
INF見付かれば恣意的に収束/発散閾値を調整しなくてエレガントだよな

俺は素性の事前に分かってて留数定理使えるような関数くらいしか扱わないから、気にせずそのまま足しちゃうわ

積分経路は(楽だから)正方形に取り、均等に4分割して極のある範囲を再帰的に絞り込んでる、下手にニアミスしたりするとかえって桁落ちしたりして整数倍からズレる
±0.1くらいなら、きっと極を囲めてるものと想定

Cで数値計算入門みたいな本で勉強してるけど、浮動小数点の特殊値とかエラーの扱いとかの記述が一切抜け落ちてて困る

451 名前:デフォルトの名無しさん (スフッ Sd70-6n8/) mailto:sage [2022/04/25(月) 19:15:48 ID:o7ajKrF0d.net]
実質ハードの実装に収束(発散)判定任せて綺麗に見えてるだけだがな
しかし比較無しに符号、複素数なら東西南北まで得られるのは便利

452 名前:デフォルトの名無しさん (ワッチョイ 73b3-jUKb) mailto:sage [2022/05/09(月) 06:57:39 ID:Egg1/KgR0.net]
20年くらい前、Windows98が使われてた頃なんですが
char s = ''; // ←シングルクォーテーション2個
っという書き方が許されてた記憶があるんですが、記憶違いかな?
今Linux上のgccでコレをコンパイルすると「error: empty character constant」になる

453 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 07:35:16.71 ID:QnLN+NJ0a.net]
あえてなのかバグなのかは知らんけど20年前のコンパイラがそういう記法を通してたってだけだろ

454 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 08:27:27.53 ID:Egg1/KgR0.net]
>>445
冷静に考えてみたらコンパイラもOSも違うからそういうことだな

455 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 10:42:17.80 ID:qGH53jdv0.net]
''で何が代入されるの?

456 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 11:12:38.36 ID:DLFHVgdp0.net]
'\0' や 0 と同等の動作なんかねぇ

457 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 11:15:27.95 ID:DuxsXAR8M.net]
普通に考えれば空文字だと思う

458 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 11:35:54.50 ID:lTlzTKNA0.net]
NULL 「何もないよー」な意味をあらわす単語
空文字 長さ0文字の文字列のこと

この解釈でOK?

459 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 11:37:44.15 ID:DLFHVgdp0.net]
文字と文字列は違う 今話題に上がってるのは文字のほう



460 名前:デフォルトの名無しさん (ラクッペペ MMe6-PUK/) mailto:sage [2022/05/09(月) 12:02:23 ID:ItS/vT2KM.net]
長さ0文字の文字列なら""(ダブルコーテーション)では?

461 名前:デフォルトの名無しさん (アウアウウー Sa1f-KEdX) mailto:sage [2022/05/09(月) 14:03:39 ID:KBCMvYUWa.net]
>>448
まあそれが一番ありがちかと

462 名前:はちみつ餃子 mailto:sage [2022/05/09(月) 17:13:19.74 ID:9vSL2/iz0.net]
>>444
言語仕様にはそれを通す規定は見つからないな。
少なくとも一文字は必要であることになってる。
C89 ではすでにそうなってるし、後の仕様でも変更はない。
出来る処理系があったのだとしたらあくまで処理系の拡張。

「たとえば 'ab' などのように二文字以上を含む場合は処理系定義」という意味の規定はあるので
雑に任意個の文字を受け付けるようにしたらうっかり 0 個も通してしまったとか、
意図的ではない挙動 (コンパイラのバグ) だった可能性もあるし。

463 名前:デフォルトの名無しさん [2022/05/09(月) 17:32:30.12 ID:x5IK3MV30.net]
立方根を自作関数で求める方法教えてください、、、、、

464 名前:はちみつ餃子 mailto:sage [2022/05/09(月) 17:46:08.50 ID:9vSL2/iz0.net]
>>455
要件次第だけど実装が一番簡単なのは log を使うことだと思う。

465 名前:デフォルトの名無しさん [2022/05/09(月) 17:47:02.53 ID:x5IK3MV30.net]
>>456
ニュートン法を使いたいです、、

466 名前:はちみつ餃子 mailto:sage [2022/05/09(月) 17:50:27.78 ID:9vSL2/iz0.net]
>>457
方法がわかってるなら何をききたいの?

467 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 18:03:26.90 ID:jsi1f5HY0.net]
何も入っていない変数が作れます

468 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 18:36:55.77 ID:4JqWZIdB0.net]
だからその
> 何も入っていない
は0から0xffのうちの何なのよ。
1 Byteの領域はあるんでそ。

469 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 18:39:59.52 ID:jsi1f5HY0.net]
そこは未知の領域



470 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 19:59:08.45 ID:UxqgrJa1a.net]
>>460
ネタに全力で食いつくなよw

471 名前:デフォルトの名無しさん (ワッチョイ ea02-zDU0) mailto:sage [2022/05/09(月) 20:46:46 ID:poYUryAv0.net]
一番簡単なのは挟み撃ちだと思うけどな
1の三乗は
0.5の三乗は
と1/2づつ狭めていく

472 名前:デフォルトの名無しさん mailto:sage [2022/05/10(火) 09:30:11.65 ID:79aB+w7Md.net]
>>450
NULLはポインターに代入できる「無意味な位置」を表すアドレス

473 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 2a3e-PvPk) mailto:sage [2022/05/10(火) 11:28:15 ID:dIEMLhL70.net]
だいぶんボケたことを書いてしまった。 (>>456)
式変形をする必要すらなく pow ひとつで良かった。

double cube_root(double x) {
return pow(x, 1.0/3);
}

474 名前:デフォルトの名無しさん mailto:sage [2022/05/10(火) 19:36:27.76 ID:gxi5OEx30.net]
それを自作関数で求めるとは言わんやろ

475 名前:デフォルトの名無しさん (ワッチョイ 6aad-zDU0) [2022/05/10(火) 23:29:45 ID:CQsKbFR90.net]
言うだろう

476 名前:デフォルトの名無しさん mailto:sage [2022/05/11(水) 06:53:21.08 ID:zyEQjrH3d.net]
コンビニ弁当買ってきて料理したというレベル

477 名前:デフォルトの名無しさん mailto:sage [2022/05/11(水) 10:08:25.28 ID:jCepvp6u0.net]
通はコンパイラの自作から始める?

478 名前:デフォルトの名無しさん (ブーイモ MMd6-RieT) mailto:sage [2022/05/11(水) 10:35:21 ID:a8uVrD+/M.net]
情報学科ならCPU設計からだよ

479 名前:デフォルトの名無しさん (ラクッペペ MMe6-PUK/) mailto:sage [2022/05/11(水) 10:39:55 ID:3yHJq16kM.net]
CPU設計だと情報学科なのか電子工学科なのか微妙なところ



480 名前:デフォルトの名無しさん (ワッチョイ be63-PvPk) mailto:sage [2022/05/11(水) 10:43:04 ID:jCepvp6u0.net]
CPU設計ソフトを作る事から

481 名前:デフォルトの名無しさん mailto:sage [2022/05/11(水) 12:00:05.99 ID:2wozbOYLd.net]
普通は自作関数作りたいんですって言ったら
>>463みたいなアルゴリズムを求めてるだろ
何の用途かは知らんが

482 名前:デフォルトの名無しさん mailto:sage [2022/05/11(水) 12:53:38.63 ID:rJ/SGv8Sa.net]
>>471
素子の物理設計からなら電子工学
アーキテクチャからなら情報工学
じゃね?
まあ素子の物理設計なんてやってる学校があるかどうかは知らんけど

483 名前:デフォルトの名無しさん mailto:sage [2022/05/11(水) 12:57:11.03 ID:3n2UFvlUM.net]
CPU設計の半導体物性や加工技術は情報学科の範疇外だと思う

484 名前:デフォルトの名無しさん mailto:sage [2022/05/11(水) 21:22:30.22 ID:Uorg83Yar.net]
>>455
もう解決したってことでいいよね

485 名前:デフォルトの名無しさん (ワッチョイ 7e02-jKFb) mailto:sage [2022/05/11(水) 23:25:04 ID:eEErnLrt0.net]
>>457
精度を組み込み関数より高めたいのかな?
なら一回で十分だよ、ループする必要も収束を確かめる必要もなくて、
y-=fx / f'x
だけで数桁精度が上がる

486 名前:デフォルトの名無しさん [2022/05/12(木) 00:07:01.33 ID:a2iZs8ls0.net]
たぶんニュートン法を使いたいけどアルゴリズムを実装できないだけだと思うな

487 名前:デフォルトの名無しさん mailto:sage [2022/05/12(木) 00:13:44.54 ID:rHUhttMxr.net]
反論がないし解決したってことで

488 名前:デフォルトの名無しさん (ワッチョイ 1746-OCox) mailto:sage [2022/05/12(木) 03:09:36 ID:DwGZHhAI0.net]
simulink coderが便利すぎて手打ちする気にならない件

489 名前:デフォルトの名無しさん [2022/05/14(土) 10:01:08.50 ID:JFqjXnq80.net]
>>444
許されていないよ

char *ss = “”;
char ch = ‘a’;

の記憶違いでしょう



490 名前:デフォルトの名無しさん mailto:sage [2022/05/14(土) 10:23:10.43 ID:yelWKEO3d.net]
char ch = NULL;
という書き方ならよく見かけた
これはもちろん間違いなのだが

491 名前:デフォルトの名無しさん mailto:sage [2022/05/14(土) 15:45:11.14 ID:fRXCxvkXd.net]
>>444
これどうなったの []
[ここ壊れてます]

493 名前:デフォルトの名無しさん [2022/05/15(日) 13:21:26.16 ID:evMzyiSb0.net]
'' が使えるかどうかはコンパイラ次第なのでは?
文法的にダメだろうがなんだろうが使えるようにコンパイラ作られたらそれまでだし。

そういやGCCにも void * の変数に ++ とかの計算が出来たりして衝撃を受けたことがあったなあ。
他のコンパイラでコンパイルしてエラーになって発覚。

494 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 13:31:38.71 ID:+H3bKj0ad.net]
キャスト式に代入とかね

495 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 13:39:44.18 ID:tGTiPFBf0.net]
void *型のインクリって一体何バイト進むんだ?

496 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 13:48:28.89 ID:+dMN0zqr0.net]
>void *型のインクリって一体何バイト進むんだ?
codepad のC言語 → 1バイト
codepad のC++ → エラー
ISO C++ forbids incrementing a pointer of type 'void*' compilation terminated due to -Wfatal-errors.

497 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 13:53:41.23 ID:evMzyiSb0.net]
>>486
1だったよ。char * と同じように計算していた。
お近くの gcc でお試しください。

498 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 14:00:59.60 ID:tGTiPFBf0.net]
即レスサンキュー

499 名前:はちみつ餃子 mailto:sage [2022/05/15(日) 14:07:27.97 ID:PUHmRytO0.net]
gcc だと sizeof(void) が 1 を返したりするんだよな。
C++ だとこれがエラーになることを SFINAE のトリックに使ったりすることもあるんで、
どうやって辻褄を合わせているのかよくわからん。



500 名前:デフォルトの名無しさん mailto:sage [2022/05/16(月) 14:17:30.76 ID:KxReCtrr0.net]
こういう質問が来るたびに自分で試せばいいのにって思う。
仕様がどうなってるのかという質問なら理解できるけど。

501 名前:デフォルトの名無しさん mailto:sage [2022/05/16(月) 20:01:48.66 ID:YQrK3HARa.net]
いや、マニュアル読めよ...
https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Pointer-Arith.html

502 名前:デフォルトの名無しさん mailto:sage [2022/05/17(火) 11:31:17.17 ID:HihepIbQd.net]
単に好奇心で聞いてるだけだと思うよ
実用的に使おうと言うんじゃなく
というか関数ポインタも1バイトになるのかw

503 名前:デフォルトの名無しさん mailto:sage [2022/05/17(火) 11:43:19.86 ID:VUKzLr9a0.net]
何か有用な使い道ってあるか?

504 名前:デフォルトの名無しさん (ワッチョイ eb69-wjZZ) mailto:sage [2022/05/17(火) 17:06:43 ID:FuWQL0zJ0.net]
汎用ポインタとして void * で受けておいて
char * でキャストすることなく そのポインタを 1バイト単位で操作できたとしても
*で実体を取得する瞬間にキャスト必須になるし どうなんだろ

505 名前:デフォルトの名無しさん (スップ Sd03-m0tN) mailto:sage [2022/05/17(火) 18:02:18 ID:HihepIbQd.net]
ただのうっかりミスだと思うんだが
修正するとコンパイルできなくなるんで仕様にしてしまったのか

506 名前:デフォルトの名無しさん mailto:sage [2022/05/17(火) 18:51:17.67 ID:Qbd65aeba.net]
>>493
> というか関数ポインタも1バイトになるのかw
んなわけないだろw
関数ポインタは普通に4/8バイトだよ
関数のサイズが1バイトになる
codepad.org/zwItkWg3

507 名前:デフォルトの名無しさん (ワッチョイ 5b63-yvGd) mailto:sage [2022/05/17(火) 19:17:06 ID:kg0MHFY+0.net]
バグからさめると別のバグの世界のような気がする。

508 名前:デフォルトの名無しさん mailto:sage [2022/05/17(火) 20:20:31.65 ID:HihepIbQd.net]
>>497
君以外はみんなわかってる気がするw

509 名前:デフォルトの名無しさん mailto:sage [2022/05/17(火) 21:01:08.19 ID:xzGoH14A0.net]
>>495
Cスタイルキャストだとあまり気にならないかもしれないけどC++スタイル2回重ねるのはちょっと嫌になる。



510 名前:デフォルトの名無しさん mailto:sage [2022/05/17(火) 21:09:29.94 ID:JCWwsd/Ra.net]
>>499
関数ポインタが1バイトとか言ってたアホがいたんだけどw
てかお前意味わかってないだろ

511 名前:デフォルトの名無しさん mailto:sage [2022/05/17(火) 21:17:57.23 ID:VUKzLr9a0.net]
>>501
文脈を踏まえれば >>493 が言ってるのは「関数ポインタでも (インクリメントで進む量は) 1 バイト」というのは理解できるだろ……。

512 名前:デフォルトの名無しさん mailto:sage [2022/05/17(火) 21:26:34.47 ID:cXB/OW/Na.net]
文脈?

> gcc だと sizeof(void) が 1 を返したりするんだよな。

> というか関数ポインタも1バイトになるのかw

恥の上塗りかよw

513 名前:デフォルトの名無しさん mailto:sage [2022/05/17(火) 21:35:35.34 ID:xzGoH14A0.net]
>>503
↓これを踏まえてのsizeof(void)だろ。なんでポインタそのもののサイズが出てくるのよ。

>void *型のインクリって一体何バイト進むんだ?

514 名前:デフォルトの名無しさん mailto:sage [2022/05/17(火) 22:33:22.42 ID:HihepIbQd.net]
>>503
お前がな…

515 名前:デフォルトの名無しさん mailto:sage [2022/05/17(火) 22:45:15.36 ID:pcmvPs1uM.net]
>>503
お前よりはな

516 名前:デフォルトの名無しさん mailto:sage [2022/05/18(水) 07:47:41.31 ID:PdG/XNB8a.net]
スレチだったら申し訳ない

とあるフリーソフトが起動しなくてdllファイルを読み込んでないのが原因っぽいんだけど
VSでdumpbinを使って関数を調べた所LNK4044のエラー 〇〇.dllは無効です、無視されます
との文が出るんだがこうなるともうdllに原因があるから対処しようがないってこと?
ここから修復出来る方法ありますかね

517 名前:デフォルトの名無しさん mailto:sage [2022/05/18(水) 11:53:43.44 ID:bslzKqYb0.net]
>>507
状況によるのでその情報からだけではわからない。

518 名前:デフォルトの名無しさん mailto:sage [2022/05/18(水) 14:03:00.61 ID:G19C49df0.net]
ぶっ壊れではなく、OSにVCランタイムが入ってない可能性
Dependency Walker (https://www.dependencywalker.com/) で
その DLL をトレースしてみて、そいつが vcランタイム 要求していないか確認する

(そして古いverのVCランタイムをどうやって入手するかという話に)

519 名前:デフォルトの名無しさん mailto:sage [2022/05/18(水) 14:10:31.11 ID:G19C49df0.net]
>>500
C++ だと void * のインクリメントがエラーになるので C限定のお話やね



520 名前:デフォルトの名無しさん mailto:sage [2022/05/18(水) 22:34:39.58 ID:CFFEhoB20.net]
ガチ初心者なんやが、まず何すればいいん?
HtmlとCSSだけ少し触ったことがある

521 名前:デフォルトの名無しさん mailto:sage [2022/05/18(水) 22:40:25.27 ID:E1vMcGgB0.net]
ガチ初心者なら、なにもC言語に手を出さなくても……

522 名前:デフォルトの名無しさん mailto:sage [2022/05/18(水) 22:52:35.00 ID:yp09HIZB0.net]
何が目標なのかを書いてみて

523 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 05:23:54.79 ID:UJCwwVidd.net]
>>510
それgcc限定のお話だな

524 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 07:44:23.05 ID:KBg+aMKFd.net]
>>511
こういうよくある質問
何答えればいい?ってなるよな

525 名前:デフォルトの名無しさん (スプッッ Sddb-f+Gq) mailto:sage [2022/05/19(木) 09:14:35 ID:TZT0OIWkd.net]
へてむるとCSSてことは、関心事はネットかな?

526 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 12:14:13.87 ID:kqStXWIg0.net]
>>511
世の中は流動的で、何が正解なのかは後にならないとわからない。
正解の道筋があるわけではなく、たくさんの知識があればどれかが役立つこともあるってだけ。
最初は物量だ。 詰め込め。

527 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 18:09:46.73 ID:KBg+aMKFd.net]
こういう奴はめんどうくさいことが嫌いで
とにかく近道が行きたくて聞いてるので
目的地なんて知らんとにかく近道教えろ!ってことなので
教えようがないんよ

528 名前:デフォルトの名無しさん mailto:sage [2022/05/20(金) 00:03:31.03 ID:SEOso9Vd0.net]
すみません、visual studio communityを使っています
関数は呼び出すより前に定義の必要があることが分かりました
ですがソースファイル(.c)を分けて、一方に関数を定義すると定義する順番を気にせず使えます
インクルードが必要だと思いますが、インクルードせずに関数を呼び出せます
何故でしょうか?

529 名前:デフォルトの名無しさん (ワッチョイ eb69-yvGd) mailto:sage [2022/05/20(金) 00:55:01 ID:tfeu1OX00.net]
>>519
> 関数は呼び出すより前に定義の必要があることが分かりました
いいえ、宣言しておけば定義は後でもいいです

> インクルードが必要だと思いますが、インクルードせずに関数を呼び出せます
しなくてもできるってことは必要じゃないってことです



530 名前:デフォルトの名無しさん mailto:sage [2022/05/20(金) 01:27:17.95 ID:1uCl4yv30.net]
>>519
#include等の先頭に#が付いたやつはCコンパイラに処理を引き渡す前にソースのテキストに対して行われる編集を指示するものだ。
つまり #include で何かファイルが指定されていたらそのファイルを読んできてその行に挿入する。そしてそれからコンパイルが行われる。
なので #include で指定するファイルの内容を直接そこに書いてしまっても結果は同じになる。

531 名前:デフォルトの名無しさん (ワッチョイ efd2-ydBh) [2022/05/20(金) 03:28:01 ID:QfqNLeQw0.net]
>>519
C言語では関数宣言がなくても関数っぽく使われてるものがあったら int func(); の宣言があるものとして決め打ちする。
.hとかで前方宣言してなくてもコンパイルは通る。
利用側の.cでは引数の数と型と返り値型が分からんが、合ってれば問題なく使える。

間違ってた使い方をしたときにエラーを出せないから極力避けるべき(コンパイラによっては出るかもしれんが)
この仕様はエラーを見つける観点からすればクソなので、長い歴史があるC言語以外では採用されてないはず

532 名前:はちみつ餃子 mailto:sage [2022/05/20(金) 05:08:48.27 ID:YhZHNcJW0.net]
暗黙の関数宣言は仕様から削除されてるよ。
C99 の時点でもう項目がない。

互換性の都合で出来るようにしてある処理系も多いと思うけど
警告くらいは出てるはずだと思うんで読み飛ばさずにしっかり見て欲しいな。

533 名前:デフォルトの名無しさん mailto:sage [2022/05/20(金) 06:35:34.02 ID:QdnN/13A0.net]
まあわかるんだけど
K&R Cの楽しさがどんどん消えていく寂しさが・・・

534 名前:デフォルトの名無しさん mailto:sage [2022/05/20(金) 08:04:15.92 ID:px60Na0ad.net]
みんな>>519の意味がよくわかるな
というかこれらの解答であってるの?

535 名前:デフォルトの名無しさん mailto:sage [2022/05/20(金) 08:18:47.95 ID:xUD6u/k80.net]
昔大学の授業で使ったTurbo Cで
printf()等がincludeせずに使えた。
warningぐらいは出てたかも。

536 名前:デフォルトの名無しさん mailto:sage [2022/05/20(金) 09:35:03.59 ID:qCLhnuk6r.net]
警告出てもコンパイル通ることあるよね
大学のシステムプログラミングの授業の教科書のサンプルコード、インクルード不足で警告よく吐いてた

537 名前:デフォルトの名無しさん mailto:sage [2022/05/20(金) 10:00:52.44 ID:px60Na0ad.net]
どんなコードでもラベルがどこかで定義されてる限りコンパイル・リンクはできるんだよ
実行時に望みの結果にならなかったり最悪保護エラーになったりするだけ

538 名前:デフォルトの名無しさん mailto:sage [2022/05/20(金) 10:12:25.64 ID:mW5NTdIj0.net]
コンパイルエラー・リンクエラーになるコードなんていくらでもあるだろ何言ってんだ。

539 名前:デフォルトの名無しさん mailto:sage [2022/05/20(金) 10:15:14.87 ID:px60Na0ad.net]
ほら変なのが絡んできたw



540 名前:デフォルトの名無しさん mailto:sage [2022/05/20(金) 12:57:31.73 ID:xUD6u/k80.net]
動的リンクってやつかな?

C言語はDOS時代に独学でやってたんで(大学はコードの書き方しか教えてくれんかった)どうしても
「宣言だけしておけばコンパイルは通るけど、リンク時に実態が無いとエラーになる」
ってイメージが。

541 名前:はちみつ餃子 mailto:sage [2022/05/20(金) 14:41:08.78 ID:YhZHNcJW0.net]
>>531
無関係。
動的リンクは実行時にリンクする (いわゆる DLL とか so とか) 仕組みで、ホスト環境側の機能。
暗黙の関数宣言は暗黙に宣言する言語機能。

542 名前:デフォルトの名無しさん mailto:sage [2022/05/20(金) 16:18:15.28 ID:px60Na0ad.net]
ごちゃごちゃしてきたな
>>519に戻って「プロトタイプ宣言しなくても参照できるのは何故か」と言えば
古典的Cでは関数名は単純にfunc()→_funcというアセンブラシンボルに変換してるだけなので
別のソースでも同じ名前で定義してさえいればリンクは通る
ただCでは引数をスタックに積んで呼び出すので引数の数や順番が関数と呼び出し側で統一されてないと引数を正しく処理できないので見つけにくいエラーを起こしたり最悪スタック上の戻りアドレスを書き換えてしまって停止する
だからインクルードファイルでプロトタイプ宣言して統一しようということ
C++では[関数名_引数の数や種類]というアセンブラシンボルに変換するので、正しい引数で呼び出さないとリンク時に見つからないと言われる
それ以前にプロトタイプが必須になってるけど

543 名前:デフォルトの名無しさん mailto:sage [2022/05/25(水) 01:22:00.94 ID:gs0SnL//M.net]
519です
遅くなってすみません
皆さんありがとうございました
まず、宣言と定義の違いを理解していませんでした

同一プロジェクト中の別ソースにある関数を、宣言しないで呼び出せるのが何故か知りたいです
戻り値がint型だと暗黙の宣言で使えるようですが、戻り値がchar型の関数を呼び出せます
関数を呼び出すより前に宣言されているはずなので、先に関数を記述したソースが解析されているということ??
試しにその関数をmain関数の後に持ってくると当然コンパイルエラーになります

恐らく>>533に頂いた回答が近いと思うのですが、リンクを理解していないためか理解できません…
勉強不足で質問するのも申し訳ないのですが、ご回答いただけると嬉しいです

544 名前:デフォルトの名無しさん mailto:sage [2022/05/25(水) 01:31:16.14 ID:Q47fXgzra.net]
呼び出せないと思ったほうが良い

545 名前:はちみつ餃子 mailto:sage [2022/05/25(水) 01:35:46.79 ID:9QZiEKx+0.net]
>>534
コンパイラは宣言の辻褄が合っていると「仮定して」処理する。
宣言の辻褄が合うようにするのはプログラマの責任。
辻褄が合ってないときにどうなるかは言語仕様上は未定義のなのでなんとなく動いているように見えてもあてにならない。

546 名前:デフォルトの名無しさん mailto:sage [2022/05/25(水) 09:42:18.14 ID:mSxNHOMI0.net]
C言語に慣れない頃はmain関数はファイルの最後に書いて、
呼び出される順番にソースの上の方に関数追加していったわ。

-----ccc.c-----

int FuncB(){
return 1;
}

int FuncA(){
return FuncB();
}

int main() {
return FuncA();
}

547 名前:デフォルトの名無しさん mailto:sage [2022/05/25(水) 10:12:31.53 ID:dvdfNrTHa.net]
>>537
呼び出しじゃなくて依存の順序で書くね
宣言はなるべく書かない!

548 名前:デフォルトの名無しさん mailto:sage [2022/05/25(水) 10:18:58.73 ID:aeVycjmX0.net]
間接再帰ができない間だけ通用する

549 名前:デフォルトの名無しさん mailto:sage [2022/05/25(水) 11:11:34.92 ID:f6RSTkPjd.net]
>>537
簡単なプログラムで急いで書いてる場合や
関数の仕様を手探りで作りながら書いてる状態ならそんなでもいい
ただFuncBからもFuncAを呼び出すようになった場合困るから



550 名前:デフォルトの名無しさん mailto:sage [2022/05/25(水) 11:27:04.22 ID:f6RSTkPjd.net]
>>534
何を悩んでるのかよくわからないが
今のCPUは8ビットレジスタなんて持ってないので戻り値がintでもcharでも戻り値の入ってるレジスタは同じになる
だから戻り値charの関数を暗黙のint関数として呼び出しても結果は特に問題なく使えるはず
ただ8ビットより上のビットにゴミ(不定値)が入ってる可能性はある

551 名前:はちみつ餃子 mailto:sage [2022/05/25(水) 11:49:22.28 ID:9QZiEKx+0.net]
>>541
(現代の一般的な) 呼び出し規約的には区別がないので動的リンクだと割と問題なさそうだが、
最適化が絡むと何がどうなるか想像もつかない。

552 名前:デフォルトの名無しさん mailto:sage [2022/05/25(水) 11:52:13.52 ID:aeVycjmX0.net]
やはりCを上っ面でなく根っこから理解するにはアセンブラの知識も必要だな

553 名前:デフォルトの名無しさん mailto:sage [2022/05/25(水) 12:06:51.94 ID:mSxNHOMI0.net]
コンパイラやアセンブラのnパス(ソースを読み下す回数)って仕様を思い出した。

DOS時代にアセンブラは2パスでCコンパイラは1パスが普通だと聞いて、
Cで先に関数/変数を宣言、定義しないとエラーになるのは1パスでコンパイラが知らない関数/変数が出てくるからだと思ってた。
正しい理解かは知らない。ラベルとかはgotoの後に出てくることもあるし。

554 名前:はちみつ餃子 mailto:sage [2022/05/25(水) 13:02:50.97 ID:9QZiEKx+0.net]
>>544
バックパッチで処理できるのでコードの頭から読みなおす必要はないよ。
知らない名前が出てきたときに型かもしれないし変数かもしれないってのでは構文解析が難しくなるが
goto の後ろにくるのはどこかで定義されているラベルだと決め打ちできるから単純な処理でいける。
(gcc だとアドレス (を生成する式) を goto に与えることも出来るように拡張されてるからもうちょっと複雑なことをしてると思う。)

555 名前:デフォルトの名無しさん mailto:sage [2022/05/25(水) 16:04:37.76 ID:ppEY2jmgd.net]
gccはプロセス置換なんかで生成した一時ファィルを食わせられないから、少なくとも2回以上はソース通読してると思われる

556 名前:デフォルトの名無しさん mailto:sage [2022/05/25(水) 19:05:44.16 ID:pzbMw6fx0.net]
関数コメントを書く場所だけど、
➀ヘッダファイルの関数プロトタイプ宣言の頭に関数仕様コメントを書く
②Cファイルの関数実装本体の頭に関数仕様コメントを書く
③両方に同じ内容を書く
のどれが今の多数派?
昔は②が多かった印象だけど最近は➀が主流なのかな?

557 名前:デフォルトの名無しさん mailto:sage [2022/05/25(水) 19:22:25.67 ID:6XrkLlxn0.net]
外部仕様ならユーザーに読ませるからヘッダだし、内部仕様なら逆に見せるべきでないから本体、とかだろ。

558 名前:デフォルトの名無しさん mailto:sage [2022/05/26(木) 07:54:06.06 ID:BbTLBX4q0.net]
将来Libファイル化とか考えると①の方が合理的かなとは思う。

VisualStudioの関数参照で、自動でコメントも表示されたと思ったけど、
そのときは①と②どっちが優先だったのかな?

559 名前:デフォルトの名無しさん [2022/05/27(金) 16:12:39.64 ID:01BAkppM0.net]
質問失礼します
あるCのプロジェクトを見ていて
typedef struct X X;
struct X { ... some fields ... };
って記述がソース中の随所で見受けられますが、これ以前にもstruct Xの宣言がないのにtypedefできるのが非直感的に感じられます。これはtypedefを宣言するのと同時に、初めてここでstruct Xも宣言しているってことなのでしょうか?



560 名前:デフォルトの名無しさん mailto:sage [2022/05/27(金) 17:20:28.72 ID:HNJHF6TRd.net]
それは構造体メンバーの中にその構造体自身へのポインタを含めさせるためのトリックじゃなかったかな
struct HOGE{
  色々なメンバー…
  struct HOGE *next;
};
とやろうとするとHOGEの定義はまだ終わってないのでundefinedエラーになる

typedef struct HOGE STRUCT_HOGE;
struct HOGE{
  色々なメンバー…
  STRUCT_HOGE *next;
};
これなら通るはず(?)

561 名前:デフォルトの名無しさん [2022/05/27(金) 17:23:59.27 ID:Dxs4BKy40.net]
え?それ大丈夫じゃなかったっけ?

562 名前:デフォルトの名無しさん mailto:sage [2022/05/27(金) 17:32:35.88 ID:Dxs4BKy40.net]
struct でメンバの定義がない不完全型はポインタ変数のみ宣言出来るので再帰的なやつも大丈夫だ。
ポインタはサイズが分かるから。
ポインタでない普通の変数はサイズが分からないので作れない。

563 名前:はちみつ餃子 mailto:sage [2022/05/27(金) 17:59:48.73 ID:/qASUmj+0.net]
>>550
その場合の typedef struct X X; の struct X は C99 の 6.7.2.3 にある
「不完全構造体型又は不完全共用体型を宣言し,その型のタグとして識別子を宣言する」
に該当する。
つまり struct X の宣言にもなっているという解釈で正しい。

あえて typedef を先に書く必然性はないんだが……
仕様にはこういう形でも書けるという例が載っているので考えなしに真似してるだけかもしれん。

564 名前:デフォルトの名無しさん [2022/05/27(金) 18:06:40.28 ID:01BAkppM0.net]
>>554
詳しい説明ありがとうございました
確かによくよく考えると
typedef struct X { ... some fields ... } X;
と同じでしたね
こちらは違和感ないんですけど確かにこちらもいきなりtypedefのdeclspec内でstruct X { ... some fields ... }初めて使ってますね

565 名前:デフォルトの名無しさん mailto:sage [2022/05/27(金) 20:53:33.56 ID:v5HQQ34i0.net]
struct Y;
struct X {
struct Y* next;
};

struct Y は struct X と同じでした

566 名前:デフォルトの名無しさん mailto:sage [2022/05/27(金) 22:59:30.30 ID:Uk6q3si00.net]
エアプ使いばかり

567 名前:デフォルトの名無しさん [2022/05/28(土) 11:23:05.30 ID:81XaDMLN0.net]
typedef struct X {
struct X *hage;
char a[0];
} X;
これはokだが

typedef struct X {
X *hage;
char a[0];
} X;
これはだめやろ

568 名前:デフォルトの名無しさん (アウアウウー Sac5-MppQ) mailto:sage [2022/05/28(土) 13:26:19 ID:CfHVy9pGa.net]
よくてもよさそうだけどなあ

569 名前:はちみつ餃子 mailto:sage [2022/05/28(土) 15:18:56.42 ID:IqCM7SI40.net]
C++ ではアリだが、それはそれとして配列の大きさは 0 は駄目だよ。



570 名前:デフォルトの名無しさん mailto:sage [2022/05/28(土) 18:03:45.61 ID:2wkU6YYXa.net]
配列要素0個はgccの拡張やね、標準規格に取り込んで欲しいわ

571 名前:デフォルトの名無しさん mailto:sage [2022/05/28(土) 18:11:56.00 ID:I3uIL+k90.net]
いっそのこと要素数指定無しの配列も認めて欲しい

572 名前:デフォルトの名無しさん mailto:sage [2022/05/28(土) 18:22:29.20 ID:GsM4WAAy0.net]
>>562
それはポインタと何が違うのん?
もしかして自動reallocとか?

573 名前:ハノン mailto:sage [2022/05/28(土) 18:26:01.93 ID:HcUv+NxjH.net]
>>560-561
C99 ではすでに取り入れられた可変長構造体ですが、C++ ではまだなんですかね?
www.kouno.jp/home/c_faq/c2.html#6

574 名前:デフォルトの名無しさん (ワッチョイ d901-2OYr) [2022/05/28(土) 18:53:41 ID:6Sv+ENTH0.net]
NFTゲームでのユーザー活動が20倍増加 DappRadarレポート

分散型アプリデータ企業DappRadarは20日、Blockchain Game Alliance(BGA)と共同で、
ブロックチェーンゲームについてのレポートを発表。2022年第1四半期(1−3月期)は、
前年同期と比べて、ユーザーの活動が2,000%増加したという。その他、様々な角度
からデータを報告した。
ブロックチェーン/NFTゲームへの第1四半期の投資総額は、約3,200億円(25億ドル)に
到達した。レポートは、もしこのペースが維持されれば、2022年全体の投資額は約1.3兆
円(100億ドル)に達する可能性もあると予測している。なお、2021年の年間投資総額は
約5,100億円(40億ドル)であった。
レポートによると、22年1Qの全ブロックチェーンアクティビティのうち、分散型ゲームアプリ
ケーションによるものが半分以上(52%)を占めていたという。ゲームをプレイすることで
お金を稼ぐことが出来る「Play-to-Earn(P2E)」のゲームもこれを牽引している。

575 名前:デフォルトの名無しさん mailto:sage [2022/05/28(土) 19:27:23.65 ID:72vE6z5l0.net]
>>564
VLAはC++ではいらない子

576 名前:デフォルトの名無しさん mailto:sage [2022/05/28(土) 20:00:35.42 ID:VWmT0B4pa.net]
>>564
だからそこで[1]を指定しないとならないのがダメダメって話
namestr[100]を確保するコード書いてみ

577 名前:デフォルトの名無しさん [2022/05/28(土) 20:00:39.40 ID:TcgqTRp90.net]
>>565
NFTはゲームに絡んでいる部分だけは面白そう

578 名前:デフォルトの名無しさん mailto:sage [2022/05/28(土) 20:13:20.50 ID:q7Q7UvgS0.net]
struct Header {
int total_size;
char naemestr[1];
};

本質的には int total_size + naemestr可変としたいが
sizeof(struct Header) は char naemestr[1]; を含むのでキモいことになる

579 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 133e-yO3c) mailto:sage [2022/05/28(土) 20:21:20 ID:IqCM7SI40.net]
>>567 >>569
二個以上のメンバからなる構造体である場合に最後の要素は不完全型であることが許される。
つまり char a[]; と書く分には OK だし、 sizoef で構造体の大きさを調べたときにはこのメンバを抜いた大きさが返ってくる。

だけど、規格を総合的に解釈すると (動的に) 割り当てる大きさが 0 であってはならないと思う。

>>564
C11 以降だと VLA はオプショナルだぞ。



580 名前:ハノン mailto:sage [2022/05/28(土) 20:46:38.14 ID:HcUv+NxjH.net]
>>566
VLA は可変長配列の話、>>564 は可変長構造体の話、全然違うし可変長構造体は C99 で是認されましたよ
ちょっと遅れているんじゃないですか?

581 名前:ハノン mailto:sage [2022/05/28(土) 20:47:26.50 ID:HcUv+NxjH.net]
>>567
[1]だろうと[0] だろうとどうでもよくて、問題は可変長構造体がC++では認められているか否かの話なのでは?

582 名前:ハノン mailto:sage [2022/05/28(土) 20:48:11.40 ID:HcUv+NxjH.net]
>>570
>>571

583 名前:デフォルトの名無しさん mailto:sage [2022/05/28(土) 21:12:45.84 ID:CfHVy9pGa.net]
動的に変わらんのに可変長っていうの違和感あるわ

584 名前:デフォルトの名無しさん mailto:sage [2022/05/28(土) 21:12:59.17 ID:q7Q7UvgS0.net]
>>570
最後の要素が 不完全型な some-type [ ] に限り sizeof は そのメンバを含まない大きさを返すけど
some-type [1] の場合にはそのメンバを含んじゃう

https://ideone.com/7GmZkR

585 名前:はちみつ餃子 mailto:sage [2022/05/28(土) 21:34:55.35 ID:IqCM7SI40.net]
>>575
「よりよい方法があるのであえて 1 を書く必要はないじゃろ」というのが主旨。

586 名前:デフォルトの名無しさん (ワッチョイ 4101-VwMx) mailto:sage [2022/05/28(土) 22:06:06 ID:q7Q7UvgS0.net]
了解

587 名前:ハノン mailto:sage [2022/05/28(土) 22:46:10.65 ID:Fu9mRLk6H.net]
>>574
確かに、静的可変長とかいい言葉はありませんかね
でも存在自体は昔から知られていましたよ www.kouno.jp/home/c_faq/c2.html#6

588 名前:デフォルトの名無しさん mailto:sage [2022/05/29(日) 00:52:18.99 ID:TsbfhcxCd.net]
まあキモいけどサイズが実際より大きすぎるぶんには問題は起きない

589 名前:デフォルトの名無しさん mailto:sage [2022/05/29(日) 01:10:06.53 ID:9R680m3FH.net]
>>579
キモい?アセンブラでは普通にやりますよ‥‥



590 名前:デフォルトの名無しさん mailto:sage [2022/05/29(日) 01:18:23.26 ID:J7SFw8MM0.net]
そうだね、アセンブラを使えば良い

591 名前:デフォルトの名無しさん (ワッチョイ 9379-3jko) mailto:sage [2022/05/29(日) 02:00:28 ID:MBI5r2Hn0.net]
最後が可変の構造体はchar naemestr[1]; なんて定義せずに
#definne Header_getNaemestr(p) (char *)((struct Header*)(p) + 1)
みたいに書く方法もあるよ

592 名前:デフォルトの名無しさん (ワッチョイ abae-11kL) mailto:sage [2022/05/29(日) 05:45:19 ID:7E0AvYTo0.net]
>>571
配列と構造体を間違えたのは悪かったが
なんで遅れてるって話になるんだ?

593 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 133e-yO3c) mailto:sage [2022/05/29(日) 08:46:06 ID:+aZOCBrD0.net]
C++ の提案としては出てる。
https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1039r0.html
今のところ C++ に取り入れられる見込みはない模様。

C で実績があるわけだし、変な矛盾はないと思うんだが
仕様として整合性をとるのは別の大変さがあるんかね?

594 名前:デフォルトの名無しさん mailto:sage [2022/05/29(日) 12:15:20.33 ID:IcJAaUL30.net]
ビットマップのカラーテーブル部
データフォーマットの中間部分に鎮座してる可変

595 名前:デフォルトの名無しさん mailto:sage [2022/05/29(日) 12:46:49.46 ID:vh7xwuy0a.net]
データ部の位置が変なリンクリスト嫌いだわ

596 名前:デフォルトの名無しさん (ワッチョイ 2b63-yO3c) mailto:sage [2022/05/29(日) 12:59:38 ID:J7SFw8MM0.net]
XEvent にはとてもお世話になりました
今は使う機会が無くなりましたが

597 名前:デフォルトの名無しさん (ブーイモ MM4b-/szq) mailto:sage [2022/05/29(日) 13:00:08 ID:lS+LcIfWM.net]
リンクリストでlist_head使ってないってこと?

598 名前:デフォルトの名無しさん mailto:sage [2022/05/29(日) 13:33:49.79 ID:9R680m3FH.net]
>>583
遅れてるからですよ、C89 から話題になっていたことを理解していないからそんな間違いをするのです‥‥

599 名前:デフォルトの名無しさん mailto:sage [2022/05/31(火) 11:53:16.64 ID:B+MkXCVE0.net]
>>589
C89から話題って何のことだ?
理解してるかどうかどうやって確認したんだ?

ああ、しどろもどろってやつかw



600 名前:デフォルトの名無しさん mailto:sage [2022/06/01(水) 11:41:44.19 ID:+HI81M8pd.net]
>>546
そういえば愛用のtccはストリームからも読み込めるけど
まあ全部内部バッファに溜めればワンパスに見えるし、結局のところはわからんぬ
すくなくとも論理的に2パスする必要のある言語仕様的は思い浮かばない

601 名前:デフォルトの名無しさん mailto:sage [2022/06/01(水) 16:22:13.14 ID:UJNXiTT3d.net]
プリプロセッサで一度マクロ

602 名前:展開してからコンパイラに渡してるから2パスと言えなくもない []
[ここ壊れてます]

603 名前:ハノン mailto:sage [2022/06/01(水) 21:59:27.44 ID:8/80xBhO0.net]
>>592
プリプロはパスに勘定しません
pascal こそ最高の正義、でも pascal 以降、おしなべてすべての言語は堕落してしまいましたね‥‥

604 名前:デフォルトの名無しさん (ワッチョイ 09ad-dhW+) mailto:sage [2022/06/01(水) 23:11:11 ID:vvQTEkHX0.net]
pascalってキラーアプリとかあったっけ

605 名前:デフォルトの名無しさん (ワッチョイ 2b63-yO3c) mailto:sage [2022/06/01(水) 23:13:36 ID:f45OwcOU0.net]
Janeなんたらは有名かもだが、他は知らない

606 名前:デフォルトの名無しさん mailto:sage [2022/06/02(木) 05:56:20.78 ID:mFaN5Fu80.net]
Cはpascalへのアンチテーゼでもある

607 名前:デフォルトの名無しさん mailto:sage [2022/06/02(木) 06:19:33.58 ID:My4Fa6/ja.net]
>>594
TeX

608 名前:デフォルトの名無しさん mailto:sage [2022/06/02(木) 18:56:01.53 ID:5oSm2G9pd.net]
>>593
アセンブラ以外のすべての言語は退廃と怠惰の産物と心得よ

609 名前:デフォルトの名無しさん mailto:sage [2022/06/02(木) 19:27:29.17 ID:M0/peWx+0.net]
怠惰は美徳なり



610 名前:デフォルトの名無しさん mailto:sage [2022/06/02(木) 20:43:06.06 ID:9S2EfN690.net]
プログラマー三大美徳
怠惰、短気、傲慢

611 名前:デフォルトの名無しさん mailto:sage [2022/06/03(金) 06:04:19.89 ID:2JsQlaOH0.net]
傲慢か
既存のコード無視して上書き的なメンテするやつか?

612 名前:デフォルトの名無しさん (ワッチョイ abae-11kL) mailto:sage [2022/06/03(金) 06:39:00 ID:2JsQlaOH0.net]
>>598
コーディングシート使って機械語を直打ちしてた俺に言わせると
アセンブラも贅沢品だぞ

613 名前:デフォルトの名無しさん (ワッチョイ 5110-yO3c) mailto:sage [2022/06/03(金) 07:54:41 ID:nRSHAlo70.net]
DOS時代にコプロセッサとか言うのあったけど、実際に使われてたの?
解説書を見ること無くWin時代に入っちゃって。

614 名前:デフォルトの名無しさん mailto:sage [2022/06/03(金) 08:05:52.15 ID:4GI8EAsla.net]
FPUはあるとないで全然違ったよ

615 名前:デフォルトの名無しさん mailto:sage [2022/06/03(金) 08:08:00.81 ID:AsLopwGrM.net]
今でもARMのFPUとかいろいろ使われてるよ

616 名前:はちみつ餃子 mailto:sage [2022/06/03(金) 09:38:08.46 ID:ysQR9TY90.net]
>>592
Tiny C Compiler はプリプロセスも含めてワンパスで処理するよ。
処理が各段階に分離されてないのでコンパイラのソースコードが読みづらいらしい。

617 名前:はちみつ餃子 mailto:sage [2022/06/03(金) 10:19:43.88 ID:ysQR9TY90.net]
GPU もある種のコプロセッサと言えなくもない。 そういう分類の仕方はあまりしないが……。

618 名前:デフォルトの名無しさん mailto:sage [2022/06/03(金) 13:47:50.04 ID:jxOrvhuY0.net]
当時、コプロセッサを「子プロセッサ」だと思ってたのを思い出す。

619 名前:デフォルトの名無しさん mailto:sage [2022/06/03(金) 19:52:40.79 ID:tmTTQ0Rod.net]
>>603
486から標準でCPUに組み込まれて
今では自動的に使われていることになる



620 名前:デフォルトの名無しさん mailto:sage [2022/06/03(金) 19:59:24.89 ID:jmq+XGTN0.net]
PentiumのFPUバグ…

621 名前:デフォルトの名無しさん mailto:sage [2022/06/03(金) 20:14:45.52 ID:sSA68QUoa.net]
487とは

622 名前:デフォルトの名無しさん mailto:sage [2022/06/03(金) 20:48:03.52 ID:LlSBEtTM0.net]
かつてのARMはFPUどころかMMU、Cacheまでコプロ命令で制御してたな。

623 名前:デフォルトの名無しさん mailto:sage [2022/06/03(金) 20:53:33.97 ID:/AcAT3MUa.net]
>>611
487は468SX(486DXの浮動小数点ユニット無し版)用のコプロやね
実態は486DXで装着すると468SXを乗っ取って全部487で実行しちゃうからCo-って感じじゃないけど

624 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 02:34:40.58 ID:YsWbAm+I0.net]
『コプロ』なるLSIを追加すると、掛け算を割り算が使えるようになる。

8~16ビット全盛時代、その文句の意味が分からなかったなあ。
BASICで普通に四則演算していたから。

625 名前:デフォルトの名無しさん (ワッチョイ c6ae-+66E) mailto:sage [2022/06/05(日) 05:54:10 ID:7J0TRviH0.net]
コプロラグニー

626 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 06:54:01.45 ID:pIMmlsGTd.net]
>>614
何もかも間違ってるw

627 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 07:36:26.69 ID:AvwHMxMpa.net]
>>614
未だに分かってないな

628 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 07:41:32.89 ID:7J0TRviH0.net]
CPUが電卓を使うというのが何ともミステリアスだった

629 名前:デフォルトの名無しさん mailto:sage [2022/06/06(月) 16:32:55.98 ID:qbvku5vVd.net]
**が理解できない
教えてくだちい



630 名前:デフォルトの名無しさん mailto:sage [2022/06/06(月) 21:07:32.00 ID:1f/zEEFPd.net]
ポインタのポインタ?

631 名前:デフォルトの名無しさん mailto:sage [2022/06/06(月) 21:24:19.81 ID:7xDnzGS8M.net]
間接参照の間接参照だろ
経験豊富なら余裕で見分けられる

632 名前:デフォルトの名無しさん mailto:sage [2022/06/06(月) 21:37:13.48 ID:v7exk6pA0.net]
ポインタは記法が悪いよ
関数ポインタはもっと悪い

633 名前:デフォルトの名無しさん mailto:sage [2022/06/06(月) 22:15:21.61 ID:uQ+SySK50.net]
宣言のときの * と、指し先の実体を求める *

634 名前:デフォルトの名無しさん mailto:sage [2022/06/06(月) 23:45:42.93 ID:9jLV7J2l0.net]
a***b

635 名前:デフォルトの名無しさん [2022/06/08(水) 02:10:57.84 ID:KYIfcmSY0.net]
c=a/*b;

636 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 07:54:23.07 ID:CNk0rgMY0.net]
int a=1;
int *b=&a;
int **c=&b;
int d=0;
d=**c; /* d == a */

637 名前:619 mailto:sage [2022/06/08(水) 08:41:18.56 ID:NWnFU//jd.net]
少しわかった気がします
試してみて理解します
皆さんありがとうございます

638 名前:デフォルトの名無しさん [2022/06/08(水) 16:31:44.77 ID:KT22GtKja.net]
関数のポインタとか
関数のポインタを引数に持つ関数のポインタとか

639 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 17:05:53.27 ID:V/Z/RpWDF.net]
typedefすればいい

typedef int AAA_FUNC( int, char *, ...);

int AAA_caller( int, AAA_FUNC*);



640 名前:デフォルトの名無しさん mailto:sage [2022/06/09(木) 11:32:24.20 ID:ZhHr/cTg0.net]
>**
なんで char **argv が思い浮かばなかったかなぁ・・・。

641 名前:デフォルトの名無しさん mailto:sage [2022/06/09(木) 13:06:08.29 ID:0WQEetb00.net]
char *argv[]という初心者をいたぶる陰険な罠を避けたかったんじゃね?

642 名前:デフォルトの名無しさん [2022/06/09(木) 15:57:22.96 ID:lMNj+E1f0.net]
GNU MakeよりCMakeが優れてるのはどの辺でしょうか?

643 名前:はちみつ餃子 mailto:sage [2022/06/09(木) 16:49:53.93 ID:k8dtcEck0.net]
>>632
CMake はメタビルドツールなので make と比較するようなものではない。
CMake を使う多くの場合で make も使う。

644 名前:デフォルトの名無しさん mailto:sage [2022/06/09(木) 17:00:06.87 ID:lMNj+E1f0.net]
>>633
そうなんですね。ありがとうございます

645 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 11:33:59.29 ID:rZTjX0hE0.net]
宣言/デリファレンスの記法が悪いというより、=が悪い
両辺を等値(あるいはそうする=代入)というセマンティクスと解離してる

646 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 11:41:37.01 ID:rZTjX0hE0.net]
初期化の=は左辺ではなく、左辺で宣言されるものを指してるわけで、頭の中で=以外の記号に置き換えて読むといいかも

647 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 13:18:43.35 ID:PT4Yy0z80.net]
=と==は、はっきり区別されてるだろ
連動して常に等しいという規則ならマクロでやればいいし

648 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 13:19:17.11 ID:HL4tZsFs0.net]
A=1
B=2
C=3
A=B=C
PRINT A,B,C

649 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 16:02:05.50 ID:5CLHXu7x0.net]
>>638
BとCが等しいかの比較結果が A に入る



650 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 22:32:37.38 ID:ExBywScCd.net]
C言語ではA=B=C;でAとBにCの値が入るはずだが

651 名前:デフォルトの名無しさん (オッペケ Sr87-vhci) mailto:sage [2022/06/11(土) 02:33:23 ID:yqb/24klr.net]
Cの比較は==だからね

652 名前:デフォルトの名無しさん (ワッチョイ cfae-/e9c) mailto:sage [2022/06/11(土) 04:29:30 ID:3J9oG0Sq0.net]
BASICだろ

653 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 08:08:56.72 ID:5lUjqa1id.net]
なんのスレ

654 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 08:27:12.87 ID:TYekU7UkM.net]
C
A=1, B=1, C=1
BASIC
A=-1, B=1, C=1

655 名前:デフォルトの名無しさん [2022/06/11(土) 15:01:54.40 ID:s3NqXqGx0.net]
ちょー初心者

引数付きの関数で引数が空のときにも意味を持たせたい
nanntoka(char adress)なんて関数で
呼び出し側がnantoka()と書いたときも意味を持たせる場合どうすりゃいいの?
null判定でいいんですか?

656 名前:はちみつ餃子 mailto:sage [2022/06/11(土) 15:07:25.17 ID:D3tfzU/30.net]
>>645
C では出来ない。

657 名前:デフォルトの名無しさん [2022/06/11(土) 15:15:18.40 ID:s3NqXqGx0.net]
だよねー
やっぱ数値は工夫のしようがないから無理なのかー
やー助かりました

658 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 15:45:32.03 ID:NTE9LoY80.net]
C++なら出来るんだっけ。

659 名前:デフォルトの名無しさん [2022/06/11(土) 15:48:15.36 ID:nZnmEekY0.net]
C++にはデフォルト引数があるし
オーバーロードもできる
Cでできるかは知らん

int f(const char*s = nullptr);



660 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 16:27:10.38 ID:dptRvNRm0.net]
普通にはできないからやるな

(1) printfみたいにやる方法
(2) __VA_ARGS__でやる方法
があるぞい

661 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 17:10:24.92 ID:t7XDMYlk0.net]
>>650
printfみたいな可変引数でも第一引数は必要なので純粋に引数なしってのはできなかったはず。

662 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 17:22:53.63 ID:lqPwOW/ya.net]
_Genericとかみんな使う?

663 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 17:28:25.28 ID:YjAHf+RK0.net]
printf(NULL);

悪魔の召喚

664 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 05:58:21.10 ID:rhQkMiRe0.net]
>>651
できるぞ
第一引数なしで可変引数にするときは
void func();
と、省略記号なしで宣言する

ただし言うまでもないが
func();
で呼び出したときの第一引数は不定なので
使い途はない

665 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 07:27:33.25 ID:Tbig4rXQd.net]
プロトタイプ省略すればなんでもできるw

666 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 08:41:18.11 ID:LzXoNMHn0.net]
>>654
> nanntoka(char adress)なんて関数で
って書いてあるのに...

667 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 15:51:07.84 ID:rhQkMiRe0.net]
>>656
> 呼び出し側がnantoka()

とも書いてあるだろ
何が言いたい?

668 名前:はちみつ餃子 mailto:sage [2022/06/12(日) 16:04:25.30 ID:7muDz8Uq0.net]
>>654
> 第一引数は不定なので

いいえ。 未定義動作です。

669 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 16:07:16.41 ID:LzXoNMHn0.net]
>>657
勝手に端折るなよ、 書いてあるのは
> 呼び出し側がnantoka()と書いたときも意味を持たせる場合どうすりゃいいの?
で、答えはできない
つまり
>>654 > できるぞ
がアホだってことな



670 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 16:17:07.73 ID:2T6Ast9Ed.net]
>>654
>第一引数なしで可変引数にするときは
可変引数になってないね
全然意味のない書き込みだね…

671 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 06:48:01.95 ID:BOW2YZM80.net]
>>658
不定の値にアクセスしたら未定義の動作だね
何が言いたい?

>>659
幼児レベルの罵倒語が必要か?
654は正しいのか誤っているのかどっちだ?

>>660
では聞くが可変引数って何だ?
JIS X3010にそんな用語はないが

672 名前:デフォルトの名無しさん [2022/06/13(月) 08:40:16.72 ID:si/cekt2d.net]
int func(void); と
int func(...); に対する言及なしで
int func(); だけ出てきてるからまともな議論じゃないと思ってスルーしてたが

可変引数は >>651 で出てきてそれに合わせてるだけじゃねーの?

673 名前:デフォルトの名無しさん (スップ Sd1f-asUV) [2022/06/13(月) 08:54:28 ID:si/cekt2d.net]
int func(void); だとそもそも引数なししか受け付けない。
int func(...); だと引数の型と個数を実装側が期待するものにしなければならない。間違えたら未定義動作。
int func(); だと引数の型がわからないまま関数を使う。間違えてたら未定義動作。

int func(...); の第1引数は普通は型を明示するから
int func(const char*, ...); のようになるが。

674 名前:はちみつ餃子 mailto:sage [2022/06/13(月) 09:33:56.73 ID:zy+KupId0.net]
>>661
いいえ。 一致しない引数で関数を呼出そうとすることが未定義です。

675 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 10:21:00.47 ID:BOW2YZM80.net]
>>664
一致しないって何と何が?
funcについて仮引数は宣言されていない
よって実引数との型の比較行われず
一致にも不一致にもあたらないぞ

676 名前:はちみつ餃子 mailto:sage [2022/06/13(月) 10:32:48.37 ID:zy+KupId0.net]
>>665
いいえ。 どこかに関数定義は存在し、関数定義 (の仮引数) とその関数呼出し (の実引数)
との矛盾 (引数の数があわない・型が適合しない) は許されていません。

677 名前:デフォルトの名無しさん [2022/06/13(月) 11:04:47.60 ID:YiPaBYDZr.net]
可変長引数では無理なのね
>>650の(2)の実装だとどうなるの

678 名前:はちみつ餃子 mailto:sage [2022/06/13(月) 11:30:06.51 ID:zy+KupId0.net]
マクロでコンパウンドリテラルを作ってから (その個数と共に) 渡すという方法が取れると思う。
受け取る関数の型は >>645 の通りではできないけど。

#include <stdio.h>
#define foo(...) bar(sizeof((char[]){0, __VA_ARGS__}), (char[]){0, __VA_ARGS__})

void bar(int n, char* args) {
if(n==1) {
printf("no argment.\n");
} else {
printf("argment is %c.\n", args[1]);
}
}

int main(void) {
foo('a');
foo();
}

679 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 11:35:06.46 ID:BOW2YZM80.net]
>>666
話が噛み合っていないな
引数の数も型も比べる相手がいないのに矛盾しようがない
そもそも関数原型を用意しましょうなんていうのはCにおいて後付けの推奨事項に過ぎない
既存のコードを否定するのは影響が大きすぎるからな



680 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 11:47:54.04 ID:ir4nxYTVd.net]
>>661
自分で「可変引数にするときは」と言っておいて
なにが「そんな用語はない」だよ
頭おかしい

681 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 11:48:35.71 ID:cwJzo4Jp0.net]
fn(void)
fn(int)

こういう2種類の引数を許容したとして
呼ばれた側はどう区別したら良いんだろう
コンパイル時に、別関数にアサインしたらいいのかな
その場合は受け取る関数も二つ用意してやらないと行けないな

682 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 11:52:40.59 ID:ir4nxYTVd.net]
区別はできない
引数を見ようとしたら結果は不定になる
単なるバグだよ

683 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 12:04:59.49 ID:63W4P7Hh0.net]
(2)の想定はこれだった
https://wandbox.org/permlink/EidRL6a8uqiszn2m
これも引数0個のときは##__VA_ARGS__か__VA_OPT__が必要で
まずかったな

684 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 12:13:41.38 ID:Bgq8kBxf0.net]
>>669 関数定義とその呼び出しを比較するって書かれてるのに、きみが無視するから噛み合わないんだよ。

685 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 12:16:16.46 ID:BOW2YZM80.net]
>>674
void func() { } /* 定義 */
int main()
{
func(); /* 呼び出し */
}
どこが矛盾なんだ?

# 迂闊な答えをすると罠があるから気をつけな

686 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 12:18:15.22 ID:BOW2YZM80.net]
>>670
その時点ではアバウトな言葉遣いが容認される流れだったが
厳密さを求める流れにあんたが変えたんだよ

687 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 12:27:06.91 ID:Bgq8kBxf0.net]
>>675 その例だけなら矛盾しないね。でも引数渡せないから>645のやりたかったことはできないよね。

688 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 15:54:04.85 ID:BOW2YZM80.net]
>>677
引数が空のときにに意味を持たせるんだったな
void func() { puts("no arguments are given"); }
int main()
{
func();
}

# さっき言った「罠」がまだここにある

689 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 16:19:19.10 ID:Bgq8kBxf0.net]
まともに話す気なさそうだし、もういいや。

C言語では>>645に書かれてるようなことはできなくて、
>>654の「第一引数は不定」はどうせ未定義動作の間違い、
という点に異論が無ければ、これ以上語ることもない。



690 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 16:34:27.02 ID:cwJzo4Jp0.net]
nantoka()と呼び出した場合、
呼び出された関数は、
nanntoka(char adress)として
スタック上からadressを取り出そうとするが
ここにある値はNULLではなく、不定値(所謂ゴミ)
NULL判定で回避はできない

691 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 16:37:54.51 ID:ir4nxYTVd.net]
>>678

Once again, once again, you're on your own
Who's to blame? who's to blame? it's such a shame
No-one ever hears your name, or plays your game

692 名前:デフォルトの名無しさん [2022/06/13(月) 18:45:35.75 ID:+5MOS3Faa.net]
>>680
> スタック上からadressを取り出そうとするが
だからそれを実行するかどうかもわからんって話
未定義動作ってそういうもんだ

693 名前:デフォルトの名無しさん [2022/06/13(月) 18:53:43.72 ID:HsopZ7m+d.net]
グローバル変数 int exists_adress; を介してやれば引数あり/なし のモードを未定義動作を回避しつつ設定できそう
実用性など皆無だが

694 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 19:17:35.58 ID:ir4nxYTVd.net]
>>682
読み出すまではできるだろ
戻りアドレスか関係ないレジスタの退避値が入っている
問題はここではエラーにならず次にこの値で何かしようとしたらクラッシュする可能性が高い
これは単にコンパイラを騙して原因がわかりにくいエラーを出す方法なだけ
全くなんの意味もない

695 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 19:21:03.88 ID:cwJzo4Jp0.net]
分からないなら、試して見れば良いのに

696 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 19:40:41.59 ID:+5MOS3Faa.net]
>>684
だからコンパイラは読み出すコードを吐く義務はない
未定義動作とわかった時点で呼び出しすらしないコードを吐く可能性もある
未定義動作ってそういうもんだ

697 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 19:46:28.66 ID:cwJzo4Jp0.net]
読み出さなければ、実行時エラーにならないだろう
なんで、なるの?

698 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 19:48:48.04 ID:cwJzo4Jp0.net]
呼ばれた側の関数は、adressに入っている(はずの)値を使うんだぜ
コード吐かなければ、それこそコンパイラのバグになるぞ

699 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 19:52:23.50 ID:cwJzo4Jp0.net]
実際に呼び出すコードは、呼ばれた側の関数に実装されるが、
呼び出し側の引数セットありと、引数セット無しで、
違うコードが実行されたりするのか?



700 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 20:03:29.40 ID:Q7R38T3J0.net]
何が起こっても不思議ではない未定義派と、コンパイラ実装は実質こうなってる派で話が噛み合うはずがないと思うの。

701 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 20:05:01.34 ID:cwJzo4Jp0.net]
信仰と言うより、勘違いだろう
恥ずかしくて後に引けなくなった感じ

702 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 20:09:56.04 ID:cwJzo4Jp0.net]
引数セットするのは、呼び出し側
コンパイラが呼び出し側で引数がないと判定した結果、
気を利かせて呼び出さないコードを吐くって一体どういうことだろう

呼ばれた側は機械的にあるはずの引数にアクセスする
呼ばれる側はセットしてないなんて分からないからアクセスしてしまうぞ

703 名前:デフォルトの名無しさん [2022/06/13(月) 20:10:29.53 ID:8KDu5nutr.net]
>「罠」がある(キリッ
とかお寒いこと書いちゃうくらいだしよほど視野が狭くなってたんだろうなぁ

704 名前:デフォルトの名無しさん [2022/06/13(月) 20:15:33.10 ID:iGSNe98na.net]
stdcall と cdecl の話か?
どっちにしても引数省略されたのかされてないのか呼ばれた方では判らん
C++なら省略の代わりにデフォルト引数入れたりマングリングしたり出来るが
Cではどうしようもない

705 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 20:17:50.97 ID:6K7aQgyCM.net]
>>693
コピペで使えそうだなw

706 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 21:42:41.32 ID:PLcvpN2h0.net]
>>688-689,691-692
コンパイルエラーとして全くコードを吐かないという事すら可能なのに何を言ってるんだよ...
今時未定義動作すら考慮して最適化したりしてる時代なんだぞw
https://qiita.com/kaityo256/items/d2677e178be0180482e8

707 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 21:44:17.84 ID:ir4nxYTVd.net]
>>686
何か勘違いしてないか
コンパイラが未定義動作とわかったらエラーか最低でもワーニングを出す
コンパイラにはわからないからバグになるんだよ

708 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 22:00:44.23 ID:cwJzo4Jp0.net]
ワーニング笑

709 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 22:05:19.85 ID:cwJzo4Jp0.net]
一体どこのコンパイラがコード吐かずに停止するんだよ



710 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 22:14:04.47 ID:PLcvpN2h0.net]
>>697
> コンパイラが未定義動作とわかったらエラーか最低でもワーニングを出す
そんな義務はない
> コンパイラにはわからないからバグになるんだよ
同一翻訳単位ならわかるだろ
勘違いしてるのは君、と言うか君の知識が浅すぎるだけ

>>699
存在するかどうかは関係なく規格上はそう言う処理系でも規格準拠という話

711 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 22:42:16.41 ID:cwJzo4Jp0.net]
つまり実在しないコンパイラってことだな

712 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 22:44:07.87 ID:cwJzo4Jp0.net]
オレ以外、全員狂ってるって言ってるのと同じ

713 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 22:44:55.56 ID:cwJzo4Jp0.net]
こいつと同じ職場でなくて良かった

714 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 23:54:32.34 ID:uF/nHRZy0.net]
法解釈論「人殺しは違法であり罰される」
実運用論「証拠を完璧に隠滅できれば罰されない」

意固地になっちゃってるから何言っても無駄

715 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 03:02:34.64 ID:bOBoFDUrM.net]
意固地になるとアスペチックになるのか
アスペチックだから意固地になりやすいのか

716 名前:デフォルトの名無しさん (ワッチョイ ff01-MmlY) mailto:sage [2022/06/14(火) 06:01:33 ID:WigeF4Tr0.net]
意固地もなにも未定義動作なんて規格の話なんだから実運用論とか言われてもねw

717 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 06:16:24.48 ID:XpDhKBGs0.net]
>>679
第一引数が不定とは、第一引数を何らかの方法で取り出した場合の話だが
おまえさん、その方法はどんな方法を想定しているんだ?

718 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 07:36:21.84 ID:/Eif446V0.net]
自分で言った言葉に?みつく芸なんだろうか

719 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 10:22:14.90 ID:2fucKJss0.net]
>>707
>654が言ってるのはどうせこんなのだろうと思ってた。
https://wandbox.org/permlink/aiZH8Ytc91RyQ7HL
#include <stdio.h>
void func();
int main() { func(); }
void func(int x) { printf("%d\n", x); }



720 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 10:32:47.66 ID:rBU/2bdp0.net]
実体記述時と、宣言&呼び出し時とで、引数の型や個数の不一致
コンパイルが通るかもしれんけど、どう動くかわからないし
俺の環境ではこう動くからと、それを信じて採用するには怖すぎる

721 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 10:33:48.55 ID:XpDhKBGs0.net]
>>709
654は俺でまあそんなとこだが
俺は今679に聞いている

おそらく「654と同じ」とかなんとか言って
自分の手の内は隠したまま人の批判をするんだろうけどな

722 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 10:44:32.74 ID:2fucKJss0.net]
>>711 え? 679 (ワッチョイ 835f-GGE9) だから答えたのに何でよくわからんイチャモンつけられてんの?
いやまぁ、予想通りで結論に異論無いならいいんだけどさ。

723 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 10:50:39.67 ID:rBU/2bdp0.net]
省略時のデフォルト引数と(マングリング等による)別実装
C以前の言語でもありそうだし前者は検討してそうなもんだけど見送ったなりの理由があるんだろうか

724 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 10:52:59.20 ID:2fucKJss0.net]
想定が合ってたということで改めて結論も明記しとくと、
>709 のプログラムが未定義動作を起こすのは不定な x の値を使用するからではなく、
func(int x) に対して引数の数が不正な関数呼び出し func() を行うからであって、
x の値を使用しない場合(例えば関数内を空にした場合など)ても未定義動作になる、という話ね。

725 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 10:53:17.30 ID:XpDhKBGs0.net]
>>712
ほらな、やっぱり自分の手の内は晒さない

726 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 11:13:15.99 ID:rBU/2bdp0.net]
661の立場だと
 void func(int x) { }
 ・・・・・
 func();
は、記述のほうで x をリファレンスしてないからセーフで未定義には該当しないと読めるが
そいう主張なのかな

727 名前:デフォルトの名無しさん [2022/06/14(火) 11:51:03.61 ID:2oEiwFQbr.net]
引っ込みつかなくなると大変だね

728 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 12:19:58.97 ID:zr4Ezotf0.net]
単に使われない変数があるってだけだと思うが

729 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 12:58:48.08 ID:WigeF4Tr0.net]
>>718
>>717ww



730 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 13:36:14.16 ID:rBU/2bdp0.net]
実装の話
関数側でスタックに詰まれた引数をクリーンアップする呼び出し規約(pascalcall や stdcall) だと
明後日に飛んでいくのか

731 名前:デフォルトの名無しさん [2022/06/14(火) 19:11:20.40 ID:DieH08Hx0.net]
引き数の値で関数内の処理を分けるか普通に関数分ければいいやん

732 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 21:11:51.49 ID:VPcVb+UNM.net]
普通の人ならそうするが、
普通で無い方法が無いかを
いろいろ議論している
暇つぶしとも言う

733 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 21:17:41.30 ID:XpDhKBGs0.net]
特定されない限りあらゆるケースを想定するからな

734 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 23:50:32.80 ID:dnqAP5Hg0.net]
>>718
DLLの呼び出しみたいに呼び出し先の実装をコンパイラが知らない場合
例えば引数をスタックに積む呼び出し規約だと
↓正常な動作
1)戻り先のアドレスをスタックに積む
2)引数をスタックに積む
3)DLL側のコード実行時にpopしてスタックから引数ゲット
4)いろいろ処理してpopして戻り先アドレスをゲットしてりたーん
これが↓異常な動作
1)戻り先のアドレスをスタックに積む
2)なんもない
3)DLL側のコード実行時にpopしてスタックから引数ゲット
4)いろいろ処理してpopして戻り先アドレスをゲットしてりたーん
5)わし、迷子
ってなるんちゃうん?
引数がレジスタ渡しなら、ただ変な数値受け取るだけで済むけど、今ここでの話じゃ限定してないようだし

735 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 00:28:34.16 ID:kIvvyTdz0.net]
呼び出しって引数をスタックに積んでから、呼び出すんじゃなかったかな

736 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 00:38:49.11 ID:3+VQJWvy0.net]
>>725
そうだよ
だから func(int);な関数をfunc(void); で呼び出したらスタックにずれが生じる可能性がある

737 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 00:43:20.78 ID:kIvvyTdz0.net]
引数をスタックに積んでから、戻りアドレスを積んでCallするなら、
func関数はスタック先頭位置にあるアドレスに戻るだけではないかな
積まれている引数はその下だからズレないと思う

738 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 00:57:26.32 ID:3+VQJWvy0.net]
>>727
>引数をスタックに積んでから、戻りアドレスを積んでCallするなら、
逆だぞ
戻りアドレスをスタックに積んでから引数をスタックに積む、その状態でfuncをコールする
そうしないと、次のpopでは戻りアドレスを受け取ることになり、引数を受け取れない
コールされ

739 名前:たfuncはpopし引数を受け取って処理(この間にスタックへのpush/popがあったりして)、最後にpopして戻りアドレスを受け取って呼び出し元に帰る []
[ここ壊れてます]



740 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 01:08:25.20 ID:kIvvyTdz0.net]
戻りアドレスをスタックに積むのは、機械語のCALL命令が行うんでしょう?

741 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 01:16:07.05 ID:kIvvyTdz0.net]
VCでアセンブラソース出力させてみました
int main()
{
 call(1);
 call();
 return 0;
}
int call()
{
 return 0;
}

742 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 01:17:50.09 ID:kIvvyTdz0.net]
_main PROC
; Line 2
 push ebp
 mov ebp, esp
; Line 3
 push 1
 call _call
 add esp, 4
; Line 4
 call _call
; Line 5
 xor eax, eax
; Line 6
 pop ebp
 ret 0
_main ENDP

743 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 01:18:18.33 ID:kIvvyTdz0.net]
_call PROC
; Line 8
 push ebp
 mov ebp, esp
; Line 9
 xor eax, eax
; Line 10
 pop ebp
 ret 0
_call ENDP

744 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 01:22:13.35 ID:3+VQJWvy0.net]
そうでした
うんこは消えます

745 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 05:01:22.73 ID:oeHjaPLHa.net]
フレームポインタってのもあって
まあなんでもいいんです

746 名前:デフォルトの名無しさん [2022/06/15(水) 15:38:51.27 ID:IEWflW3Ga.net]
>>728
馬鹿発見

747 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 18:22:38.94 ID:mSaBC5As0.net]
>729
全てのCPUにCALL相当の命令があるとは限らないってことを頭の片隅に。

748 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 19:14:29.02 ID:kIvvyTdz0.net]
CALL命令のないCPUにCってどういう風に実装するのかな
キッと神様のような人だろうと思う

749 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 19:34:49.70 ID:vqdnmmaIa.net]
最近call見ないよね
命令はあるけど



750 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 19:53:29.20 ID:XKwaNEU7 ]
[ここ壊れてます]

751 名前:0.net mailto: >>736
C言語で書いたコードが実行できるようなCPUでCALL相当の命令がない奴なんてあるのか?
まさかと思うけどBSR(Branch SubRoutin)とかBAS(Branch and Save)はCALLと綴りが違うんだーっていう主張じゃないよね
[]
[ここ壊れてます]

752 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 19:55:51.69 ID:XKwaNEU70.net]
>>737
汎用機みたいにスタックが無いマシンだとソフトでスタック作るとかする

753 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 20:05:59.02 ID:kIvvyTdz0.net]
呼出も戻りも、ジャンプ命令で実装するんかい?

「食らえ、GOTO攻撃!」

754 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 20:06:30.10 ID:gppE9X5h0.net]
>>737
厳密じゃないけど、
push pc
jmp xxxx
 :
pop pc
みたいな。push pcする時にjmpのアドレスの次を

755 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 20:07:41.69 ID:gppE9X5h0.net]
途中で書き込んてしまった。

>>737
厳密じゃないけど、
push pc
jmp xxxx
 :
pop pc
みたいな。push pcする時にjmpの次のアドレスをpushする必要があるけど。

756 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 20:29:16.05 ID:mSaBC5As0.net]
>739
2000年あたりのスパコンのデバッグやってたけどスタックポインタ自体無かったよ。
汎用レジスタの一つをスタックポインタの様に使ってた。
スパコンのPEはCPUじゃ無いっていうならそれまでだけど。

OSがCで書かれてたよ。

757 名前:はちみつ餃子 mailto:sage [2022/06/15(水) 20:38:36.75 ID:VY0KZJ3n0.net]
専用のレジスタを用意するかわりにアドレシングモードを充実させてるタイプの CPU もあるとは聞いたことは有る。
複数のスタックを用途別に使ったりする運用も出来るので便利っぽいよ。

758 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 20:42:40.26 ID:Z7kfo4VR0.net]
リンクレジスタを使うアーキテクチャは
呼び出しも戻りもジャンブだよ

759 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 21:27:21.82 ID:XKwaNEU70.net]
>>744
だから>>740に書いたように汎用機みたいにハードウェアスタックが無いプロセッサーは普通にあるよ
でもBASみたいにサブルーチンを呼び出す命令はある(戻りアドレスをレジスタに格納してジャンプする)
スパコンの命令セットは見たことないけど似たような命令はあると思う



760 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 21:32:09.09 ID:mSaBC5As0.net]
JMPで呼び出した関数に飛んで、
JMPで呼び出し元に戻って行ってたよ。
RET、それ相当の命令が無かった(使われてなかった?)。

761 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 21:47:48.01 ID:vqdnmmaIa.net]
ぴゅう太のCPUとか全然レジスタなかった

762 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 21:51:15.67 ID:XKwaNEU70.net]
>>748
どこのスパコン?

763 名前:デフォルトの名無しさん [2022/06/15(水) 21:56:54.74 ID:Ltc382Vw0.net]
Z8スーパーコンピュータ

764 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 21:58:58.10 ID:XKwaNEU70.net]
>>749
あれはレジスタはメモリー上に置くって言う設計思想だから

765 名前:デフォルトの名無しさん (ワッチョイ 7f36-GGE9) mailto:sage [2022/06/15(水) 22:55:33 ID:mSaBC5As0.net]
>750
富士通。
実機は見たこと無い。
なんかアメリカに設置されてて、日本の端末(FMVにFreeBSDかなんか入れてた)からtelnetで入って作業してた。
入社1年目だったんでテスト作業員+フリーズした場所の特定と原因予想してた。

766 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 07:08:44.59 ID:ilsRfae90.net]
STM 14,12,12(13)
LR 12,15
GETMAIN RU,LV=72
ST 13,4(,1)
ST 1,8(,13)
LR 13,1

767 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 07:48:03.24 ID:acnLqVz40.net]
>>753
2000年辺りならベクトルタイプのVPP シリーズの方かな
スカラパラレルはUltraSPARCだし

768 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 14:04:28.10 ID:6d6damS40.net]
① struct _Hoge;
② typedef struct _Hoge Hoge;
③ struct _Hoge { int a; };
④ typedef struct _Hoge { int a; } Hoge;

↑の①~④はどれが「定義」でどれが「宣言」かよくわからんです
typedef の def は define(定義)の def ですが
変数作って値を定義していないので全部宣言ですかね?

769 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 14:15:11.58 ID:ilsRfae90.net]
原則、重複が許されるのが宣言、許されないのが定義
ただし仮定義のような例外も一部ある



770 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 14:18:30.74 ID:6d6damS40.net]
そうすると①は宣言ですね

771 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 14:37:35.99 ID:ilsRfae90.net]
うむ

772 名前:デフォルトの名無しさん (アウアウウー Sa67-iSSN) [2022/06/16(木) 19:53:21 ID:hEUIHdUOa.net]
コンパイラが単語を覚えるのが宣言
メモリに実態が産まれるのが定義

773 名前:デフォルトの名無しさん (ブーイモ MM7f-a+sK) mailto:sage [2022/06/16(木) 20:19:36 ID:2MvWGhryM.net]
③書いたところでメモリに実体生まれんだろ

774 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 22:26:58.67 ID:6d6damS40.net]
③を2回書くとエラーになりますね
この辺は沼でしょうか?
厳密に分けても何かに役立つというものでもないし・・・

775 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 23:14:06.95 ID:y5qePP6X0.net]
そういう風に決めたなら仕方がないが
意味的には、定義と宣言って逆な印象を受けます
数学でいうと、
点や直線の定義では実際の描画はまだですが
点や直線の宣言っていうと、その場に描画すると言うイメージ

776 名前:はちみつ餃子 mailto:sage [2022/06/16(木) 23:16:16.53 ID:yR1zGyRS0.net]
宣言と定義の意味については C99 だと 6.7 に記述がある

> 宣言は、幾つかの識別子の解釈及び属性を指定する。
> 識別子の定義 (definition) とは、宣言のうち次のものをいう。
> ・ オブジェクトに対しては、そのオブジェクトの記憶域を確保する宣言
> ・ 関数に対しては、関数本体を含む宣言
> ・ 列挙定数又は型定義名に対しては、その識別子の (唯一の) 宣言

逆に言えば定義は常に宣言でもある。

777 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 05:27:18.60 ID:zopwF6/i0.net]
実体が作られるといっても
プログラムイメージにスペースが確保されるとは限らない
静的記憶域期間を持つものはプログラムイメージに作られるが
自動記憶域期間を持つものは実行中に割付と解放が行われるし
構造体のメンバ宣言並びはコンパイラのメモリに作られる

これらのいずれも「定義」となる

778 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 07:51:59.32 ID:bL392TY50.net]
>>765
> 構造体のメンバ宣言並びはコンパイラのメモリに作られる
それは
> コンパイラが単語を覚えるのが宣言
の方じゃね?

779 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 08:44:28.03 ID:rAke7YJm0.net]
なんとなくのイメージ
・宣言
「xxxxって名前の変数(関数)がどっかにあるらしいよ。詳しいことは知らん。」

・定義
「xxxxの詳細はココに書かれたxxxxxである!これは決定事項である!!」



780 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 13:54:11.29 ID:zopwF6/i0.net]
>>766
struct _Hoge;
struct _Hoge; // OK
これは _Hoge という識別子がタグ名という定型データとして作られ、
その後、定型データの中の属性フラグが検査されて一致が確認される

struct _Hoge;
union _Hoge; // NG
これは定型データの中の属性フラグが検査され不一致が検出される

struct _Hoge;
struct _Hoge { int a; }; // OK
これは定型データの中のポインタがまずNULLで作られ、
次に、そのポインタでメンバ宣言列という不定型データを指す

struct _Hoge { int a; };
struct _Hoge { int a; }; // NG
これは既にNULLでなくなったポインタの貼りかえで拒否される

宣言の重複は矛盾の検出のみを行い
定義の重複は不定型データの再作成で拒否される
{ } は無結合

781 名前:デフォルトの名無しさん [2022/06/17(金) 16:09:04.52 ID:G79h5Zera.net]
>>763
誤訳

782 名前:デフォルトの名無しさん [2022/06/17(金) 16:13:44.68 ID:G79h5Zera.net]
struct _Hoge { int a; };
struct _Hoge { int a; }; // NG

この場合でもコンパイル単位が別ファイルだと(ほぼ)問題無い訳で
一致していなければ一致していないなりの結果が産まれる

783 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 16:33:58.20 ID:zopwF6/i0.net]
>>770
(ほぼ)は不要
問題ないというか完全に同じ内容になっていない場合は未定義の動作

784 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 19:28:59.11 ID:bL392TY50.net]
>>768
なにを言いたいのかさっぱりわからんw

785 名前:デフォルトの名無しさん [2022/06/18(土) 20:10:05.11 ID:cOcEcivya.net]
ヘッダ include したことないとか
ヘッダに実装描くとか
分割コンパイルしたことないとか
そういうアホのにおいがプンプン丸

786 名前:デフォルトの名無しさん [2022/06/18(土) 23:11:41.82 ID:eg6b2Ems0.net]
どこにそんな話出てた…?

787 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 15:11:40.00 ID:BalXxnr90.net]
定義と宣言の区別に関して
同一翻訳単位の中で 重複が許されるのが宣言 の実例の話やろ

788 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 20:05:57.84 ID:3bt1t/j50.net]
聞きたいのは内容じゃなくてなぜそんな話をいきなり始めたのか?なんだけどw

789 名前:デフォルトの名無しさん [2022/06/20(月) 20:11:30.62 ID:8GsqMDfwr.net]
ヘッダに実装書いたっていうレスもヘッダをincludeしたことないっていうレスも見当たらないけど…



790 名前:デフォルトの名無しさん [2022/06/20(月) 20:27:07.42 ID:aPzFu0cfd.net]
別ソースから同じヘッダをincludeしていてもコンパイル時には必ず別ファイルとなるわけで(ほぼ)じゃ困る

791 名前:デフォルトの名無しさん (ワッチョイ ffad-DcGD) [2022/06/25(土) 17:14:53 ID:g21tYZQo0.net]
if ( a == 0 )
{ port &= 0b11011111 ;
}
else
{ port |= 0b00100000 ;
}

これ条件文使わずに書けるよね?

792 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 17:41:40.76 ID:ZgY7VkDz0.net]
>>779
三項演算子は条件文に含みますか?

793 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 17:45:19.17 ID:zMWMLrlCM.net]
書けるかどうかより、分かりやすいかの方が大事

794 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 17:45:51.43 ID:9jpr7vFN0.net]
port = port & ~((a == 0) * ~0b11011111) | (a != 0) * 0b00100000
頭悪いんでこれ以上無理。確実にレビューで落ちる

795 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 17:56:58.31 ID:9jpr7vFN0.net]
何だこれでいいのか
port = port & 0b11011111 | (a != 0) << 5

796 名前:デフォルトの名無しさん [2022/06/25(土) 18:15:30.63 ID:g21tYZQo0.net]
おまいらは何で素直にかけないんだ?(´・ω・`)?

797 名前:デフォルトの名無しさん [2022/06/25(土) 18:26:40.73 ID:XIyeaAEpr.net]
>>779
条件分を使わない理由はないよね?

798 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 18:26:54.17 ID:9jpr7vFN0.net]
まさか質問者に駄目だしされるとは思わなんだ

799 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 18:28:36.26 ID:gQjoPRQF0.net]
条件によって8ビット目以上も変える訳ではないのならば…かな
&= 0b11011111 | !!a << 5や&= ~0b00100000 | !!a << 5とかも論理否定は楽な方で
後者は若干レジスタ雑に出来るが…しかし最適化するとif文も分岐排除されてほぼ変わらん



800 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 19:15:33.07 ID:ca1tbhpBH.net]
条件文使わずに書いても何もメリットない

801 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 19:35:30.93 ID:IvS/BJ7o0.net]
やるならアセンブラレベルで・・・

802 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 22:45:43.97 ID:UWoTCBGr0.net]
Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 16.00.40219.01 for 80x86

0b 使えないw

803 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 23:52:02.49 ID:PITDVbGU0.net]
そりゃそうだろ
C言語としてはGCCの拡張だし
C++14でコンパイルしたらいけるんじゃね?

804 名前:デフォルトの名無しさん (ワッチョイ 8f10-tCSL) mailto:sage [2022/06/26(日) 09:58:04 ID:EKr6eQfX0.net]
>0b 使えない
0xに変換か、どうせ定数なんだからそれっぽいマクロで代用しとけばヨロシ。

805 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 10:58:18.13 ID:hEbl3kj1a.net]
orをandで記述する方法は

806 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 11:05:33.04 ID:j/Qk9Cw40.net]
負論理

807 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 11:39:10.83 ID:ImrLxjwid.net]
A|B == ~( ~A & ~B )

だけどまったく意味はないな

808 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 11:50:57.28 ID:9tvF1jx30.net]
ソースを難解にする

809 名前:フに多少貢献 []
[ここ壊れてます]



810 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 14:00:18.84 ID:r2JBCRM90.net]
怒(プイプイ)モルカーだな

811 名前:デフォルトの名無しさん (ワッチョイ fdbb-/dRU) mailto:sage [2022/07/09(土) 06:20:44 ID:LJ5BAcPW0.net]
今日の学び
voidは1バイト

812 名前:デフォルトの名無しさん (ワッチョイ 355f-UQ1h) mailto:sage [2022/07/09(土) 11:11:08 ID:8isXQv7m0.net]
>>798 たぶんgcc拡張のポインタ演算の話でしょ。他ではそんなこと言えないから気を付けて。

813 名前:デフォルトの名無しさん (ワッチョイ fdbb-/dRU) mailto:sage [2022/07/09(土) 12:16:19 ID:LJ5BAcPW0.net]
>>799
GCCだけど

printf("%d\n", sizeof(void)); // 1

になる。
これGCCだけなん?

814 名前:デフォルトの名無しさん (スッップ Sd43-jz6z) mailto:sage [2022/07/09(土) 12:23:26 ID:U9EmutCWd.net]
https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Pointer-Arith.html

815 名前:デフォルトの名無しさん (ワッチョイ fdbb-/dRU) mailto:sage [2022/07/09(土) 12:27:53 ID:LJ5BAcPW0.net]
>>801
へ~知らなかった

816 名前:デフォルトの名無しさん (ワッチョイ cb63-TkQT) mailto:sage [2022/07/09(土) 12:31:03 ID:Pcby8BG30.net]
ではvoid型変数 sを宣言してみて下さい
サイズを測ってご覧にいれます

817 名前:デフォルトの名無しさん (ブーイモ MMcb-bSlT) mailto:sage [2022/07/09(土) 12:37:25 ID:rCvRfQZvM.net]
糞坊主が

818 名前:デフォルトの名無しさん (ワッチョイ 8302-Fj9x) mailto:sage [2022/07/09(土) 12:39:57 ID:OQU8CgWM0.net]
屏風に描いたvoidなんつって

819 名前:デフォルトの名無しさん (ワッチョイ 23ad-jVDF) mailto:sage [2022/07/09(土) 20:15:12 ID:A5P06KhI0.net]
ヘ_ヘ
ミ・・ ミ
(   )~



820 名前:デフォルトの名無しさん mailto:sage [2022/07/09(土) 20:56:46.61 ID:2FL2bpN80.net]
他人のふんどしで勝負する男の人って‥‥

821 名前:デフォルトの名無しさん mailto:sage [2022/07/09(土) 21:10:00.31 ID:eJjSZ+Lo0.net]
はなししとは?
 ヘ_ヘ
ミ・・ ミ  
(   )~

822 名前:デフォルトの名無しさん mailto:sage [2022/07/10(日) 01:02:53.42 ID:NKXzP1tS0.net]
このスレに50代の者が居ると見た

823 名前:デフォルトの名無しさん mailto:sage [2022/07/10(日) 01:43:41.30 ID:4ppCSg1ba.net]
70までおるじゃろ

824 名前:デフォルトの名無しさん mailto:sage [2022/07/10(日) 05:01:57.35 ID:teKb0H7o0.net]
ム板の寄合所かよ

825 名前:デフォルトの名無しさん mailto:sage [2022/07/10(日) 15:27:56.20 ID:EpSIEDJ/H.net]
>>808
他人のふんどしで勝負する男の人って‥‥

826 名前:デフォルトの名無しさん mailto:sage [2022/07/10(日) 15:35:59.80 ID:IXzc/cv30.net]
みっともねえよな
そんなことまでパクリしかできねえやつ

# 奴が来なくなって20年近く経ってんのに進歩してやがらねえ

827 名前:デフォルトの名無しさん mailto:sage [2022/07/10(日) 15:38:00.79 ID:pOdXKR0zH.net]
>>813
ですよね

828 名前:デフォルトの名無しさん mailto:sage [2022/07/11(月) 08:40:13.85 ID:2XjvtJRn0.net]
voidの長さはよくわからんが、取り敢えずvoid*のインクリ幅を実装の最小単位に取っておけば何でも指せるし、そのアドレス演算に意味を持たせる事も可能になる
どうしてもvoidのサイズを決めたいというのなら、まあ合理的な実装だと思う

829 名前:デフォルトの名無しさん mailto:sage [2022/07/11(月) 13:22:34.96 ID:cGEUsgsp0.net]
void*のインクリ幅に何か意味があるの?



830 名前:デフォルトの名無しさん (ワッチョイ e369-TkQT) mailto:sage [2022/07/11(月) 17:20:33 ID:lWPgqJ6O0.net]
char*でいいじゃん
なんだかわからないものは「バイト列」だろ

831 名前:デフォルトの名無しさん (ワッチョイ 7510-TkQT) mailto:sage [2022/07/11(月) 17:41:30 ID:TkfF8Lfy0.net]
警告されるから

832 名前:デフォルトの名無しさん (ワッチョイ cb63-TkQT) mailto:sage [2022/07/11(月) 17:44:52 ID:rBy2qCXb0.net]
普通は明示的キャストを介して使うよな

833 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1b3e-TkQT) mailto:sage [2022/07/11(月) 17:46:10 ID:POJvWuxZ0.net]
そう。
オブジェクトを指すポインタは void* との間で「暗黙に」変換することが出来る。
最終的に char* にキャストするのだとしてもインターフェイス (仮引数) が void* だとキャストをせずに済む。
memmove とかがそれ。

834 名前:デフォルトの名無しさん mailto:sage [2022/07/11(月) 22:57:06.26 ID:7aXqGp3Qd.net]
なんでも指せるのとインクリメント幅を1にするのは関係ない
むしろインクリメントしようとしたらミスである可能性が高いのでワーニングかエラーにすべき

835 名前:デフォルトの名無しさん mailto:sage [2022/07/12(火) 07:13:33.37 ID:MjEzd7ZRd.net]
ハード的な最小単位へのポインタは欲しいね
charって書くの本当は気持ち悪い

836 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1b3e-TkQT) mailto:sage [2022/07/12(火) 10:12:07 ID:AnYAkaOT0.net]
C の仕様上はアドレスを定義できる単位をバイトと呼び、 char は 1 バイトであると定義されてる。
つまり char はハードウェア的な最小単位と言えるが……、まあ名前が良くないのは確か。

837 名前:デフォルトの名無しさん mailto:sage [2022/07/12(火) 12:14:37.21 ID:MjEzd7ZRd.net]
つーか符号がどうたら言われたくない

838 名前:デフォルトの名無しさん mailto:sage [2022/07/12(火) 17:26:10.54 ID:DhrJi4Do0.net]
(char が 7bit の系って生き残ってるのかしら?)

839 名前:デフォルトの名無しさん mailto:sage [2022/07/12(火) 17:42:00.57 ID:4CshQ+Jw0.net]
というかなんでcharってsignedにしてあるんだろ?
char と unsigned charじゃなくてchar と signed char にしてくれていればよかったのにと思わなくもない
intもsignedだし(逆にintがunsignedだったら使いづらいけど)符号付の計算が基本とかあるのかね?



840 名前:デフォルトの名無しさん (ワッチョイ a5d2-WFmy) [2022/07/12(火) 17:58:33 ID:YvrX4qJi0.net]
C++ではcharが符号付きか符号なしかは環境依存だよ
unsigned charともsigned charとも別の型扱いされる不思議な子

たぶんC言語でも同じ扱いだろう

841 名前:デフォルトの名無しさん (ラクッペペ MMcb-KYPL) mailto:sage [2022/07/12(火) 18:06:57 ID:ydFOrexCM.net]
charの符号は処理系依存と違ったっけ?

842 名前:はちみつ餃子 mailto:sage [2022/07/12(火) 18:30:46.85 ID:AnYAkaOT0.net]
そう。 >>827 の説明が正しい。
char の符号は処理系定義かつ signed char とも unsigned char とも異なる独立した型。
signed char か unsigned char のどちらかと別名という可能性もないので、
C++ のオーバーロードや C の _Generic で三種類に分岐することは出来るよ。

char は整数だから他の整数型との一貫性で考えれば符号付きになるのが自然なようにも思えるが……、
実行基本文字集合は char で (char が符号有りだとしても) 正の値になることを
要求している (C99 だと 6.2.5 に書いてある) ので各環境が採用している文字コードによっては
符号無しにせざるを得なかったのだと思う。
EBCDIC とかだとどうしてもそうなる。

まあ負の文字コードが有っても辻褄合わせは出来たとは思うんだが、
仕様が成立した時点でそうでない想定をしているコードが結構あったりしたんじゃないかな。

843 名前:デフォルトの名無しさん mailto:sage [2022/07/12(火) 18:31:52.31 ID:xJzxH9jqa.net]
>>825
規格では8bit以上だったはず
www.bohyoh.com/CandCPP/FAQ/FAQ00013.html

844 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 11:20:33.14 ID:Zw91A11j0.net]
>>829
>まあ負の文字コードが有っても辻褄合わせは出来たとは思うんだが、
比較の際に暗黙で走る int への格上げの時にややこしくなりそうやね

char ch;
...
if (ch >= 0x80) // 上位ビット立ってる?

845 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 11:53:33.59 ID:CCByLcFJM.net]
&buf[0] ってbufと同じだよな?
なんか意味あんのこの書き方?

846 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 12:43:05.67 ID:hH7ZnQ+pM.net]
&buf[0] 配列の先頭要素のアドレス
buf 配列の先頭のアドレス
同じ

sizeof(&buf[0]) 配列の先頭要素のサイズ
sizeof(buf) 配列のサイズ
異なる

配列の要素数を求める場合
sizeof(buf)/sizeof(&buf[0])
で頻出する

847 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 12:44:54.67 ID:WjRfIVOeM.net]
センキュー

848 名前:蟻人間 mailto:sage [2022/07/13(水) 12:52:57.77 ID:H8j4+v2od.net]
>>833

>配列の要素数を求める場合
>sizeof(buf)/sizeof(&buf[0])
>で頻出する

ダウト。sizeof(buf)/sizeof(buf[0])の間違い。

849 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ a33e-TkQT) mailto:sage [2022/07/13(水) 14:23:32 ID:Kb1eM8RI0.net]
>>832
配列の先頭としての意味よりその要素に意味があるということを強調した雰囲気を表すためにそういう書き方をすることはあるよ。
仕様としての解釈 (動作) に差が無い場面であっても人が読む上では雰囲気の差はある。



850 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 16:51:43.98 ID:Zw91A11j0.net]
添え字が非0 のとき &buf[1] か buf+1
添え字が0 のとき &buf[1] か buf+0 か buf か

同じコードになるけど記述に意味を見出すかどうか

851 名前:デフォルトの名無しさん [2022/07/13(水) 17:38:26.38 ID:H0DndFW/a.net]
_countof使わないのか

852 名前:はちみつ餃子 mailto:sage [2022/07/14(木) 13:40:03.36 ID:m4fVu3Vb0.net]
配列の大きさを知る演算子くらい標準入りしてもよさそうなもんだとは思う。

853 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 13:46:25.72 ID:YnALXIBFd.net]
ポインタに使うアフォが出てくるに1ペリカ

854 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ a33e-TkQT) mailto:sage [2022/07/14(木) 14:14:28 ID:m4fVu3Vb0.net]
むしろ、イディオムやマクロによる素朴な実装だとポインタを渡してもエラーなく通過してしまうからこそ
言語の機能として提供して然るべきだと思うよ。

855 名前:デフォルトの名無しさん (アウアウウー Sa09-S3zt) mailto:sage [2022/07/14(木) 14:49:53 ID:abQKMdR+a.net]
結局、配列が無いのが問題、みたいな

856 名前:デフォルトの名無しさん (ワッチョイ cb63-TkQT) mailto:sage [2022/07/14(木) 15:26:18 ID:fgF/JGu/0.net]
配列とは別に文字列型作れば良かったのかな

857 名前:デフォルトの名無しさん mailto:sage [2022/07/15(金) 19:30:20.65 ID:r8EwCLZ2d.net]
それを言ったら破門だよ

858 名前:デフォルトの名無しさん mailto:sage [2022/07/15(金) 22:46:23.97 ID:vZ8IDyva0.net]
string_t *s = str_alloc();

859 名前:デフォルトの名無しさん mailto:sage [2022/07/17(日) 00:26:30.17 ID:1DBmbCgq0.net]
char a[32];
char b[32];

fp = fopen("abc.csv", "r");
for(; fscanf(fp,"%[^,],%s%s", a, b) != EOF; ){
printf("%s %s\n", a, b);
}
fclose(fp);



860 名前:デフォルトの名無しさん mailto:sage [2022/07/17(日) 00:28:02.51 ID:1DBmbCgq0.net]
test.c:23:31: warning: format ‘%s’ expects a matching ‘char *’ argument [-Wformat=]
for(; fscanf(fp,"%[^,],%s%s", a, b) != EOF; ){
           ^^
問題なく動くんですが、上のような警告が出ます。
気にしなくても良いですか?

861 名前:デフォルトの名無しさん mailto:sage [2022/07/17(日) 01:16:21.70 ID:RIt+yucva.net]
&a[0]にでもしたらいいかもな
警告出さなきゃ出ないんじゃなかったかな

862 名前:デフォルトの名無しさん mailto:sage [2022/07/17(日) 04:38:20.42 ID:tV/KWY8I0.net]
指定子の数と引数の数が合ってないのでは?

863 名前:デフォルトの名無しさん mailto:sage [2022/07/17(日) 09:31:19.06 ID:5kV34GW+0.net]
%s は1つで良いんじゃね?

864 名前:デフォルトの名無しさん mailto:sage [2022/07/17(日) 09:48:19.50 ID:gh7Bz7cid.net]
%sが多いね
あと32バイト以上あったらクラッシュするけどいいの

865 名前:デフォルトの名無しさん mailto:sage [2022/07/17(日) 11:10:26.64 ID:tV/KWY8I0.net]
>>846
そのコードで問題なく動くならabc.csvがかなり特殊な形式だと思う

https://ideone.com/haAzIG

866 名前:デフォルトの名無しさん mailto:sage [2022/07/17(日) 12:37:05.79 ID:Fwel5trjd.net]
最初の%[^,]でa[]にコンマの前までが取られて
次の%sが行末までをb[]に取るから
その次の%sをコピーするポインタが指定されてないので本来はここでクラッシュするけど
前の%sで行末に行ってるのでこの%sは必ず無視されるという綱渡り状態
直しておいたほうがいいよ

867 名前:847 (ワッチョイ 7db3-pN0Z) mailto:sage [2022/07/18(月) 00:57:42 ID:i3ini+Eo0.net]
サンクス(´・ω・`)

868 名前:デフォルトの名無しさん [2022/07/21(木) 23:01:29.27 ID:qNAIu8qZa.net]
生徒数と科目数と点数をキーボードから入力し、それぞれの科目数の個人、全体の合計点数、(科目数の個人、全体の)平均点をそれぞれ出すプログラミングをやっているのですが、全く分からないので教えてください。

869 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 23:24:42.74 ID:25qjJOkGr.net]
キーボードから入力する方法がわからないのか、平均点をだす方法がわからないのか?



870 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 23:58:01.60 ID:tQt8NkV/0.net]
多分学校の宿題かなにかなんだろうが、
言葉足らずで相当補わないと問題が分からない
出題されたまんまの内容を書いてみてくれないか

871 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 01:39:33.12 ID:fX2QhDiX0.net]
「全く分からない」に対してわかるように教えるには入門書の頭から説明しないと理解できない状態ってことだからなぁ。
それなら普通に入門書を読むべき (その上でどうしても理解できない箇所があるならそれを質問すべき) という話だし、
理解する気が無くてそういうプログラムが欲しいだけなら宿題スレに投下したほうがいい。

872 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 03:00:46.63 ID:GQs5tpkHd.net]
質問者です

僕は答えだけが欲しいんです。どうして説教なんかしてくるんですか?

貴方達は黙ってコードを書いてくれるだけでいいんです。それ以外のことを私は貴方達に求めていません

ご回答よろしくお願い致します

873 名前:蟻人間 mailto:sage [2022/07/22(金) 04:01:58.51 ID:9CWw4cOJd.net]
成績を収める配列変数を宣言して下さい。
ループ変数iとforループを使ってデータ入力する処理を記述して下さい。
ループ変数iとforループを使って合計を求める処理を記述して下さい。
合計と件数より、平均値を計算して下さい。

874 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 13:35:19.04 ID:63Xcy7bk0.net]
>>859
回答するから駅前でパンツ脱いで待ってろ

875 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 13:53:06.84 ID:o6RHeQNrM.net]
jkの視線が辛いです…

876 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 16:50:00.97 ID:FTsytUCEd.net]
近道を教えてください
目的地?そんなもの知らん
いじわるしないで近道だけ教えてくださいよ

877 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 17:05:43.46 ID:5FG7Keur0.net]
だから宿題スレ逝けってば

878 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 17:48:50.97 ID:xVgLzEHZ0.net]
他人にコード書いてもらいたいならお金払うのが常識だぞ
勉強になったな

879 名前:デフォルトの名無しさん [2022/07/22(金) 18:36:47.63 ID:iW5ae+Pc0.net]
>>859
別人か?
釣りか?
スレを活性化させるための煽りか?



880 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 20:52:21.05 ID:6vEMzc8Xd.net]
>>866
別人です
釣りです
スレを活性化させるための煽りです

そもそもワッチョイ見れば分かるけどキャリア違うし
>>863も同じような輩でしょ

881 名前:ハノン mailto:sage [2022/07/22(金) 21:13:42.27 ID:axiBU42YH.net]
炎上学習法がはじまりました…

882 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 22:22:56.34 ID:V/ouQpU1d.net]
>>867
皮肉って概念を聞いたことあるかね

883 名前:デフォルトの名無しさん (ワッチョイ daad-Vb2/) [2022/07/22(金) 23:07:49 ID:iW5ae+Pc0.net]
そういや Excel 使った方が楽にできそうな問題だな。

884 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 06:55:01.01 ID:GjOkJS/b0.net]
絶望的に適性ないやつがいるな
そんな無駄なことは今すぐやめろ
限りある人生をもっと有意義なことに使え

885 名前:デフォルトの名無しさん [2022/07/23(土) 20:24:50.53 ID:xI/QpgaL0.net]
たとえば?

886 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 20:54:12.53 ID:ZMU4WQ2EH.net]
>>871
1.適性がない、というその適性を定義してください。
2.適性がない、となぜ判断したのか 1. をもとに詳しく記述してください
3.1.2.が出来ないのではないのならば、あなたこそ、あなたのいう適性をもちあわせていない、と私は判断します
以上

887 名前:デフォルトの名無しさん (スプッッ Sd73-ENu5) mailto:sage [2022/07/23(土) 21:02:39 ID:qM4duTiyd.net]
エラーや不具合があったときに理屈じゃなくて直感ですぐに原因が思いつく

888 名前:タイプは適性があると思う
経験で補えるっちゃ補えるけど
[]
[ここ壊れてます]

889 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 22:07:51.06 ID:HvDaSJUkd.net]
>>873
あんたの判断がどうかしたのか



890 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 22:19:32.27 ID:KvepzSxm0.net]
当社比

891 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 23:01:14.87 ID:FDsLOdQw0.net]
>>874
人間の無意識領域が活発に活動している証拠ですね
最近は前野隆司氏の受動意識仮説に心惹かれます
実験心理学からは「準備運動電位」がずいぶん前に提示されていますが、今はどこまでわかっているのでしょうか?

https://mevius.5ch.net/test/read.cgi/tech/1556284220/703
https://mevius.5ch.net/test/read.cgi/tech/1640401906/23

892 名前:デフォルトの名無しさん (ワッチョイ 0bae-SXL5) mailto:sage [2022/07/24(日) 06:47:50 ID:cLNfquIV0.net]
>>873
どうした、頭に血が昇ってw
身に覚えがあるんだろ

別に俺が定義しようがしまいが関係ない
おまえが直面している現実が全てだ

コード書けねえんだろバーカw
そんなん俺は厨房の頃からやってたぜ
当時はBASICすらなく機械語だった
やるやつは人のせいになんかしねえんだよ

893 名前:デフォルトの名無しさん (スップ Sd33-ENu5) mailto:sage [2022/07/24(日) 07:04:34 ID:gwuc5Le4d.net]
ジジイがイキってるの悲しすぎるな
キャリア積んだおっさんならもうコードなんて書いてないのに

894 名前:デフォルトの名無しさん mailto:sage [2022/07/24(日) 07:35:48.77 ID:kz71o77Jd.net]
>>874
経験がないとそんなことは無理だな
経験によって結果から原因を推定するデータベースを増やしているに過ぎない
生まれつきプログラマになるべく生まれた人間などいないw

895 名前:デフォルトの名無しさん mailto:sage [2022/07/24(日) 08:01:42.09 ID:QsSUkFLAM.net]
直感というより論理(左脳)と感性(右脳)のどちらの活性が高いかの違い

896 名前:デフォルトの名無しさん mailto:sage [2022/07/24(日) 08:03:50.29 ID:bdlqmtah0.net]
>>880
同じ事象に遭遇しても原因を自分でちゃんと究明して対策してる奴と人に言われて直すだけの奴だと取得する経験値がだいぶ違うだろ
そういう意味での適性はあると思う

897 名前:デフォルトの名無しさん (スップ Sd73-E5Ow) mailto:sage [2022/07/24(日) 08:41:03 ID:mCJq3UO5d.net]
>>879
何も知らねえネンネだなw
熟練者を歳だけでやめさせるバカ企業が
今どうなってるか見りゃわかるだろめくら
IT業界だけ特別とでも思ってんのか

昭和の一時期だけ特別だったが
いい歳こいたジジイが言ってんなら
進化の止まった化石はてめーだ

898 名前:デフォルトの名無しさん (スップ Sd33-ENu5) mailto:sage [2022/07/24(日) 09:04:36 ID:gwuc5Le4d.net]
>>883
コーダージジイ効いてて草
こういうやつってマジでガキに見えるよなー
人の上に立った経験とか一度も無さそう

899 名前:デフォルトの名無しさん mailto:sage [2022/07/24(日) 10:46:43.07 ID:Zzdkl5Gk0.net]
>>880
しかし、生まれつき、あるいは育ちのせいであるのかもしれませんが、無意識領域が活発に活動しやすい人、というのはあるかもしれませんよ
人はそれを「閃きの人」と呼ぶようですが
そして無意識領域がよく働く人はプログラマの適性があるといってもいいでしょうね

https://mevius.5ch.net/test/read.cgi/tech/1556284220/703
https://mevius.5ch.net/test/read.cgi/tech/1640401906/23



900 名前:デフォルトの名無しさん mailto:sage [2022/07/24(日) 11:42:01.96 ID:W6pjxqRvM.net]
閃き改変スパゲティ

901 名前:デフォルトの名無しさん [2022/07/24(日) 16:22:46.57 ID:9ixHhHoi0.net]
BASICもない時代か。
俺の時は TK-80 に BS 乗っかったやつが BIT-INN に並んでたな。カラーの COMPO-BS もあった。
その他 Apple ][、PET、TRS-80、BASIC MASTER Level 2、MZ-80K 等がある時代で、フロッピーディスクが Apple のやつは1枚2000円だったかな?

902 名前:デフォルトの名無しさん mailto:sage [2022/07/24(日) 16:31:31.34 ID:95dB6L1Ta.net]
COMPOにカラーなんてあった?

903 名前:デフォルトの名無しさん [2022/07/24(日) 16:45:38.99 ID:9ixHhHoi0.net]
>>888
なかったっけ? あったような気がするんだが。
PC-8001 の画面の見間違いではないと思う。まだ出てなかったし。

904 名前:デフォルトの名無しさん mailto:sage [2022/07/24(日) 16:49:13.87 ID:cLNfquIV0.net]
>>884
コード書けねえ産業廃棄物がコーダー馬鹿にしてんな
フリーターだのニートだのってレベルの稼ぎの扶養虫にしかなれる見込ねえくせに
俺は生まれながらの帝王だ退かぬ媚びぬ省みぬだと? ぶわははは

這い上がる気力のねえやつに栄光はねえんだよ、憶えておきな

905 名前:デフォルトの名無しさん mailto:sage [2022/07/24(日) 17:04:41.33 ID:xRzJF5neF.net]
>>885
受動意識みたいなオカルトに構っていてはプログラマにはなれませんよ
プロの仕事にはすべて説明可能なことが求められます
どこかのリモートで動いてる端末人間にプログラムはできません

906 名前:デフォルトの名無しさん (ワッチョイ 1301-T1rX) mailto:sage [2022/07/24(日) 17:18:29 ID:bdlqmtah0.net]
なかったと思うよ、そもそもCOMPO-BS/80はキャラクター表示しかできないし

907 名前:デフォルトの名無しさん (US 0H0b-RyvJ) mailto:sage [2022/07/24(日) 17:25:59 ID:C0umvz7vH.net]
>>891
デバッグ箇所の発見にも説明が求められるのですか?バグが修正されたことを証明できれば十分なのではないでしょうか?

908 名前:デフォルトの名無しさん mailto:sage [2022/07/24(日) 17:34:50.38 ID:cLNfquIV0.net]
発見に至る思考過程はいらんな
ドライに事実関係の説明のみで足りる

犯人探しは俺らの仕事ではなく
下手に口を出すとこっちが立場悪くなる

909 名前:デフォルトの名無しさん mailto:sage [2022/07/24(日) 18:23:35.95 ID:nci3iowod.net]
>>893
>デバッグ箇所の発見
バグ箇所のことかな
どうしてそのようなバグが発生したかまで明確にしないと
同じバグがまた起こるだろう



910 名前:デフォルトの名無しさん mailto:sage [2022/07/24(日) 18:43:56.60 ID:3i0SwxtcH.net]
>>895
話をずらしましたね

私は
>デバッグ箇所の発見
つまり、どこから手をつければいいか当たりをつける能力について言及したのであって、発見したバグの振る舞いについて説明する必要はないとはいっていませんね

話をずらしてはいけませんよね

911 名前:デフォルトの名無しさん mailto:sage [2022/07/24(日) 18:49:15.54 ID:DQlWH9SB0.net]
どこにバグがあるか、ゴーストがささやいてくれる

912 名前:デフォルトの名無しさん mailto:sage [2022/07/24(日) 18:52:37.42 ID:cLNfquIV0.net]
言い逃れの天才はいらねーよ
頼むから志願してくんな
ゴミ処理だけでどんだけ負担か考えろ馬鹿が

913 名前:デフォルトの名無しさん mailto:sage [2022/07/24(日) 18:54:41.69 ID:cLNfquIV0.net]
それで給料くださいだと? 金銭感覚が絶望的にバグってる超危険人物め

914 名前:デフォルトの名無しさん mailto:sage [2022/07/24(日) 19:03:04.31 ID:DQlWH9SB0.net]
そういう人物は確かにいる
システム障害時に、数分で原因を調べ上げ復旧する奴

915 名前:デフォルトの名無しさん mailto:sage [2022/07/24(日) 19:24:24.29 ID:ZZNXvMhPH.net]
>>900
その人なりのロジックがちゃんとあるけれども、凡人には理解できないのかもしれませんね…
まあ意識(ロジック)も無意識もフルに総動員しているとは思いますが

>>891
あくまでとある仮説に興味がある、といっているだけで、それですべてを説明しようとは思っていませんよ
それにしても「準備運動電位」、あなたはどう説明しますか?

916 名前:デフォルトの名無しさん mailto:sage [2022/07/24(日) 19:27:04.95 ID:cLNfquIV0.net]
電位ってそれ以上でもそれ以下でもないな
喩え話でもしたいようだが、この世界では究極の最重度池沼ってだけw

917 名前:デフォルトの名無しさん mailto:sage [2022/07/24(日) 19:32:05.82 ID:bdlqmtah0.net]
>>896
でかいシステムなら分割して調査することもあるからどこから調査するとかどうやって調査するかとか事前に決めるのは珍しくないぞ
そんなことも知らないのはお前の経験値が低いだけ

918 名前:デフォルトの名無しさん mailto:sage [2022/07/24(日) 19:58:27.05 ID:3wgufn1TH.net]
>>903
そんなことはあたりまえでしょう?
手当たりしだいにしらみつぶしに見てバグが見つかるとでも?

でもね、凡人が見当もつかない糸口をたどって(バグつぶしに限らず)問題解決を行う現場を見てきましたよ
そういう人間の考え方が、単にロジック一辺倒ではないのでは?という切り口で話をしているものだと思っているのですが

あるいは自分のコーディングの最中に自分のミス・バグを見つけ出すのは、最初自分が正しいと考えているだけに、結構難しいことだと思っているのですが、
そういうときは非凡な人はどういう思考方法をとっているものなんでしょうか?

919 名前:デフォルトの名無しさん [2022/07/24(日) 20:09:14.55 ID:IZxLU3+7a.net]
自分が正しいと考えていないに決まってるだろ



920 名前:デフォルトの名無しさん mailto:sage [2022/07/24(日) 20:21:06.06 ID:bdlqmtah0.net]
>>904
> 手当たりしだいにしらみつぶしに見てバグが見つかるとでも?
それでないと見つからないバグもある

> でもね、凡人が見当もつかない糸口をたどって(バグつぶしに限らず)問題解決を行う現場を見てきましたよ
そう言うのは経験値が違う
まあその考え方を文書化できるかどうかは別の話

> あるいは自分のコーディングの最中に自分のミス・バグを見つけ出すのは、最初自分が正しいと考えているだけに、結構難しいことだと思っているのですが、
> そういうときは非凡な人はどういう思考方法をとっているものなんでしょうか?
お前はテストもしないのかよ

921 名前:デフォルトの名無しさん [2022/07/24(日) 21:29:00.78 ID:9ixHhHoi0.net]
スレが活性化したようだな。
読む気が起こらんけど。

922 名前:デフォルトの名無しさん mailto:sage [2022/07/24(日) 21:42:14.57 ID:lVfeNqR1r.net]
全然、C言語の話にならんな

923 名前:デフォルトの名無しさん mailto:sage [2022/07/24(日) 21:44:29.10 ID:+vY6C834M.net]
話題に参加できない…

924 名前:デフォルトの名無しさん mailto:sage [2022/07/25(月) 06:28:56.85 ID:DH7dOKBU0.net]
何でしらみつぶしが出てくるんだ
不具合の内容から疑われることを挙げて
排除できる項目を排除して疑う範囲を狭めていくにあたり
論理思考が得意なやつとそうでないやつの違いが出るってだけだ

925 名前:デフォルトの名無しさん mailto:sage [2022/07/25(月) 07:35:59.20 ID:fNFid1J7H.net]
>>910
バグの排除にロジックが必要なのは当然ですが、それだけではないでしょう?
特に自分のバグを外すには、そもそも自分のロジックを疑うという能力は、ロジックを使うのはまず困難なのでは?

926 名前:デフォルトの名無しさん mailto:sage [2022/07/25(月) 07:56:46.33 ID:GzNr1keE0.net]
>>910
疑う範囲を狭めて最後はしらみつぶしとか普通にあるだろ
なぜ排他だと思った?

927 名前:デフォルトの名無しさん mailto:sage [2022/07/25(月) 08:14:58.48 ID:DH7dOKBU0.net]
バグの排除とは言ってない
疑いが晴れたものを検査から除外するということだ

なぜ排他が出てくるのか脈絡がわからない

928 名前:デフォルトの名無しさん mailto:sage [2022/07/25(月) 09:21:33.29 ID:/kQlrWHQa.net]
>>913
> バグの排除とは言ってない
おれも言ってないけど?

> 疑いが晴れたものを検査から除外するということだ
検査の意味がわからんが調査のことならしらみつぶしは疑いを晴らす方法の一つ

> なぜ排他が出てくるのか脈絡がわからない
お前がしらみつぶしを排除しようとしてるから

929 名前:デフォルトの名無しさん mailto:sage [2022/07/25(月) 09:31:36.48 ID:DH7dOKBU0.net]
アホ検知用にわざとアンカー貼らなかったら見事に引っかかったなw



930 名前:デフォルトの名無しさん (ワッチョイ 1301-T1rX) mailto:sage [2022/07/25(月) 09:53:41 ID:GzNr1keE0.net]
なにを引っ掛けたつもりになってるのかさっぱりわからん
まあまともなレスを返せなくなったんだろうなw

931 名前:デフォルトの名無しさん (ワッチョイ 1363-VsAj) mailto:sage [2022/07/25(月) 11:30:58 ID:TD+9RuG80.net]
仕事している人は、こんなところで遊んではいない

932 名前:デフォルトの名無しさん [2022/07/25(月) 11:45:05.33 ID:dJJE5upaa.net]
C++の話題は禁止?

933 名前:デフォルトの名無しさん mailto:sage [2022/07/25(月) 11:49:31.88 ID:TD+9RuG80.net]
禁止ではないと思うが、スレ違い扱い受ける

934 名前:デフォルトの名無しさん (スップ Sd33-8HTV) mailto:sage [2022/07/25(月) 12:13:08 ID:n7JQk0Isd.net]
>>901
ただのDSPだろう
CPU(脳)が応答していては間に合わない用途のためにプログラマブルなDSPがある
ボールが見えてから打つかどうか決めていては間に合わない
このコースに来たらバットを振れと反射神経をプログラムできるようになっている
それがあたかも脳の判断に先行してるように見えるだけ

935 名前:デフォルトの名無しさん mailto:sage [2022/07/25(月) 12:52:39.70 ID:BRC10lp0d.net]
>>914
流れ読めてないアフォハケーン

936 名前:デフォルトの名無しさん mailto:sage [2022/07/25(月) 13:27:55.29 ID:GzNr1keE0.net]
>>921
レスできなくなって流れが読めてない~ってバカ?w

937 名前:デフォルトの名無しさん mailto:sage [2022/07/25(月) 13:30:31.02 ID:lj82liZDM.net]
シーッ

938 名前:デフォルトの名無しさん mailto:sage [2022/07/25(月) 15:49:07.62 ID:iiUi9YtaA.net]
はっきり言ってやらなきゃ解らんようだな
バグの排除と言ったのが誰なのか
おまえ読み間違えてんだよ

939 名前:デフォルトの名無しさん mailto:sage [2022/07/25(月) 15:58:23.55 ID:GzNr1keE0.net]
>>924
だから>>911なんて俺には関係ないだろ
アンカーもまともに追えないのか?



940 名前:デフォルトの名無しさん mailto:sage [2022/07/25(月) 16:01:28.30 ID:TD+9RuG80.net]
ロジックは合っているがバグだ、というのは割とよくある(まれにではない)

941 名前:デフォルトの名無しさん mailto:sage [2022/07/25(月) 16:36:40.16 ID:GzNr1keE0.net]
>>926
・仕様バグ
・非同期処理絡み
・限界値オーバー等
それ以外ってあったっけ?

942 名前:デフォルトの名無しさん mailto:sage [2022/07/25(月) 17:00:35.20 ID:TD+9RuG80.net]
今は昔、DBが気軽に使えなかったシステムがあった。
プレーンファイルにデータが格納されていた。
お客の要求は、
「その中からキャンセルされたデータを見つけ、取り除いてくれ。件数は高々数十件のはず」
当時のSEは、キャセルデータ一覧から一つずつデータを取り出し、
格納されたファイルから見つけてはキャンセルフラグをセットしていく
という設計をした。スッキリした設計で、客のレビューも通った。
プログラマは仕様書通りにプログラムを作成した。
実運用に入ったところ、この処理がいつまで経っても(何時間も)終わらない事態になった。

原因調査を依頼され、調べて対処方法を提案し、
プログラムの手直しをした。
その結果、処理は10分程度で終わる様になった。

実データは、お客の想定よりは多かった(と言っても100件程度だったが)ことと
試験環境が貧弱で、性能評価が不十分だったことが挙げられた(公式見解)。

943 名前:デフォルトの名無しさん mailto:sage [2022/07/25(月) 17:06:35.01 ID:p29EsXcp0.net]
今は昔 ドラゴンボールというものありけり
7つ集めないと気軽に使えなかった

944 名前:デフォルトの名無しさん mailto:sage [2022/07/25(月) 19:19:30.93 ID:0R5nn0qA0.net]
非同期やマルチスレッドなんかの 暗に平行に動いてるようなやつ
の想定順序外の順で進んでったとき

945 名前:デフォルトの名無しさん mailto:sage [2022/07/25(月) 19:25:09.85 ID:gun8tVmY0.net]
昔のプログラム系コラムで(うろ覚えなんで改変あり)
統計計算するコード書いて、
自分で用意したデータでは問題なかったが、
デバッガ―チームのデータでは誤差が酷いとの報告が。
変数をfloatからdoubleにしても改善せず、
使ったテストデータ見せてもらったら数値が10兆のや1/10兆のまであったとかなんとか。

946 名前:デフォルトの名無しさん (ワッチョイ 8bbb-OROS) [2022/07/25(月) 19:42:53 ID:uz33IoOs0.net]
それって範囲チェックを怠った普通のバグよね?

947 名前:デフォルトの名無しさん mailto:sage [2022/07/25(月) 20:13:02.04 ID:GzNr1keE0.net]
>>928,931
件数や数値の範囲を規定してなかったんだろうな
規定してたらテストしてるだろうし
>>928の方はキャンセルする件数も重要だけど変更するプレーンファイルのサイズも重要

948 名前:デフォルトの名無しさん mailto:sage [2022/07/25(月) 21:04:57.01 ID:TD+9RuG80.net]
仕様通りに作ってあるってことで
どこもバグだと認めず、修正にかかれなかった

949 名前:デフォルトの名無しさん (ワッチョイ 1301-T1rX) mailto:sage [2022/07/25(月) 21:23:11 ID:GzNr1keE0.net]
実行時間の上限も書いてなかったんでしょ?
ならバグじゃないからそりゃ誰も修正しないよね



950 名前:デフォルトの名無しさん (ワッチョイ 1363-VsAj) mailto:sage [2022/07/25(月) 22:30:59 ID:TD+9RuG80.net]
そうもいかん
放置すれば業務が止まる

951 名前:デフォルトの名無しさん mailto:sage [2022/07/26(火) 04:44:04.50 ID:1cOtUCQ/0.net]
なら仕様を作った奴がポンコツだったってだけの話

952 名前:デフォルトの名無しさん mailto:sage [2022/07/26(火) 06:23:30.91 ID:3o/UjHLA0.net]
>>937
奈良仕様... 要人警護でバグるんだな。

953 名前:デフォルトの名無しさん mailto:sage [2022/07/26(火) 15:23:03.61 ID:SJaqZdjxH.net]
>>920
それは条件反射ではない普通の「反射」
か、あるいは条件反射ですね

「準備運動電位」
https://ja.wikipedia.org/wiki/%E3%83%99%E3%83%B3%E3%82%B8%E3%83%A3%E3%83%9F%E3%83%B3%E3%83%BB%E3%83%AA%E3%83%99%E3%83%83%E3%83%88
1970年代に行われた実験により、ボタンを押す・指を一本曲げる、手首を曲げる等運動の先立って脳に変化が起こる、という観測結果が得られています
2008 年には、被験者が意思決定をするよりも最大 7 秒先立って脳活動が認められる、という^報告がありました

954 名前:デフォルトの名無しさん mailto:sage [2022/07/26(火) 18:24:38.80 ID:fW/tQ0510.net]
その生理現象を検知して価値を生み出すコードを書くならともかく
精神論や根性論の類いに持ち出す野郎はスレチ

955 名前:デフォルトの名無しさん mailto:sage [2022/07/26(火) 20:36:46.75 ID:s+/k7yg8H.net]
>>940
ええ、バグ取りに使えないものかと
異様にバグ取りがうまい人の頭の使い方について話題にしようと思ったんですよ

956 名前:デフォルトの名無しさん mailto:sage [2022/07/26(火) 20:59:48.42 ID:RzFS95olr.net]
そんなの経験の差でしょ
脳科学なんかを引くより経験積んだほうが実用的で合理的

957 名前:デフォルトの名無しさん mailto:sage [2022/07/26(火) 21:21:37.87 ID:LALlY+2gH.net]
>>942
いつまでも KKD ではねえ
もう少し精緻な話がしたいものです

958 名前:デフォルトの名無しさん mailto:sage [2022/07/26(火) 21:22:24.36 ID:4nABh0qj0.net]
バグ取りの上手い人というか、発見が早い人は
アスペ気味の人が多い
これは悪い意味で言っているのではなく
天才肌というか、直感でものを把握出来る人という意味です

959 名前:デフォルトの名無しさん mailto:sage [2022/07/26(火) 21:24:16.26 ID:LALlY+2gH.net]
>>944
それもアラアラな話だと思いますが
しかし、その直感でものを把握できる、ってのがどういう思考法なのか興味がありますね
もう少しそのタイプのプロフィールを教えていただけませんか?



960 名前:デフォルトの名無しさん mailto:sage [2022/07/26(火) 21:33:29.39 ID:4nABh0qj0.net]
そういうのは、誰もマネが出来ないから参考にするのは無理でしょう
脳細胞のシナプスからして違うかもしれないし

961 名前:アリ人間 mailto:sage [2022/07/26(火) 21:58:01.96 ID:SFGiBpCod.net]
プログラムの仕組みを完全に理解したいなら、ITパスポート、基本情報、コンピュータサイエンスの3つ。

962 名前:デフォルトの名無しさん mailto:sage [2022/07/28(木) 12:32:34.18 ID:FYpyeWPbd.net]
>>941
C++の話ではないね

963 名前:デフォルトの名無しさん mailto:sage [2022/07/28(木) 14:58:27.27 ID:9giz0zU00.net]
あ、Cだった
同じことだが

964 名前:デフォルトの名無しさん mailto:sage [2022/07/28(木) 15:27:42.65 ID:hSAjJRb60.net]
混ぜたら駄目、危険!

965 名前:デフォルトの名無しさん mailto:sage [2022/07/28(木) 17:42:15.99 ID:9giz0zU00.net]
プロの化学者つかまえて次亜塩素酸ナトリウムと塩酸を混ぜるなとドヤるアホ
みたいなもんだな

966 名前:デフォルトの名無しさん mailto:sage [2022/07/28(木) 17:53:09.20 ID:j+X5VIDEM.net]
混ぜるな危険
ECMA 372

967 名前:デフォルトの名無しさん mailto:sage [2022/07/28(木) 19:46:49.41 ID:X16X3UK80.net]
>>945
直感って大抵は経験に基づくショートカット。
常人でも意識しながら年単位でデバッグ続けてりゃ多少は身につくんじゃねの?

968 名前:デフォルトの名無しさん mailto:sage [2022/07/28(木) 20:04:33.20 ID:KHWw5jDSH.net]
>>953
身につくかどうか、ではなく、どんな考え方、思考法、そして可能であればその思考法に似た行動様式等がざっくばらんに出てくることを期待します

969 名前:デフォルトの名無しさん [2022/07/29(金) 10:43:07.31 ID:nIcw6oQba.net]
>>954
鏡で自分の顔を観てバグを一覧にしてみ
良い訓練になる



970 名前:デフォルトの名無しさん mailto:sage [2022/07/29(金) 13:39:55.55 ID:LR/vrGjN0.net]
これ俺の顔じゃない
鏡がバグってる

971 名前:デフォルトの名無しさん (ワッチョイ 79bb-dSCr) mailto:sage [2022/07/30(土) 00:46:07 ID:wZaxY20D0.net]
組み込みの世界ってまだC言語が主流ですよね?
IoTも同じ?

972 名前:デフォルトの名無しさん (ワッチョイ 9a3e-dSCr) mailto:sage [2022/07/30(土) 00:52:24 ID:B4kVDCsM0.net]
IoT というのは広い概念なのでそれだけではなんとも言えん。
低レイヤもあれば高レイヤもある。

973 名前:デフォルトの名無しさん mailto:sage [2022/07/30(土) 13:46:54.93 ID:kKuVH5i8M.net]
I Of the Tiger

974 名前:デフォルトの名無しさん mailto:sage [2022/07/30(土) 15:28:57.06 ID:sZRL8Eez0.net]
Intensity Output Time

975 名前:デフォルトの名無しさん mailto:sage [2022/07/30(土) 16:11:54.93 ID:2k62MWGF0.net]
次のCの仕様が出てくるというのにこのスレでは全く話題にならないんだな

976 名前:デフォルトの名無しさん mailto:sage [2022/07/30(土) 16:16:00.43 ID:dAB37O5c0.net]
tccで標準入力からソース読むプログラムに、さらにstdinからデータ読ませるのは無理ですかね?
(echo "ccode with stdin" | tcc -run - ) <file
みたいな感じで(fileまでソースと取られてコンパイルエラー)
一時ファイル作れば出来るけど、ちょっとワンライナー書くときに不便を感じる

echo "main(char*c, char**v){puts(v[0]);puts(__FILE__);}" | tcc -run -

-
<stdin>
を出力します、多分tccはプロセスを自己書き換えで置き換えるんでしょうか?ファイルハンドルが継承されてる?

977 名前:デフォルトの名無しさん mailto:sage [2022/07/30(土) 16:20:55.72 ID:2BJ7IgJr0.net]
新しいCってそもそもどこで需要があるんだろう

978 名前:デフォルトの名無しさん mailto:sage [2022/07/30(土) 16:38:39.78 ID:wZaxY20D0.net]
>>958
高レイヤーだと普通にリッチな言語が使われたりするのかな

>>961
deferが入るかもって別スレで見かけたけど本当?

979 名前:デフォルトの名無しさん mailto:sage [2022/07/30(土) 16:55:11.02 ID:KiVbgp3AM.net]
組み込みと言ってもラズパイ環境では完全にPythonが主流でC/C++(gcc)はあまり利用されてないイメージがある



980 名前:デフォルトの名無しさん (ワッチョイ 7a63-dSCr) mailto:sage [2022/07/30(土) 17:15:44 ID:rf6S0zxh0.net]
組込って普通は静的バイナリにするんじゃないの

981 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 9a3e-dSCr) mailto:sage [2022/07/30(土) 17:20:48 ID:B4kVDCsM0.net]
>>964
C23 には defer は入らない見込み。 全体としては C++ の後追い的な変更が多い。

auto が型推論付きの変数定義になるだとか、constexpr や nullptr が導入されるだとか、
属性の表記法が C++ 風の [[ ]] を使った形になるだとか、そういう感じのやつ。
(ちなみに今回導入される constexpr は変数には付けられるが関数には付けられないので
コンパイル時プログラミングが C++ みたいに出来るわけではない。
定数式の成立要件が C と C++ で違うので C++ 寄りにする追加機能。)

思い切った変更ではあるが、根本的なプログラミングスタイルを変えない程度のバランスのとれたところだと思う。

982 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 9a3e-dSCr) mailto:sage [2022/07/30(土) 17:34:09 ID:B4kVDCsM0.net]
>>966
もちろんそういう部分も大きいけど……。
リッチな組み込みは一昔前のパソコンを超えるくらいの性能はあるし Linux くらいは載るので、
デバイスドライバさえ用意すればあとはパソコンみたいに使えるという場合は普通にある。
かつては組み込みと言えばそのデバイスドライバの部分こそ大きかったと思うんだが、
IoT を意識するレベルの製品だとアプリケーションレイヤが巨大なので Python くらいは動くこともあるだろう。
主流かというとちょっと疑問ではあるが……。

983 名前:デフォルトの名無しさん (ワッチョイ 7a63-dSCr) mailto:sage [2022/07/30(土) 17:38:53 ID:rf6S0zxh0.net]
それは組み込みと言うより、OS上で動かしている単なるアプリだろう

984 名前:デフォルトの名無しさん (ラクッペペ MMee-kNao) mailto:sage [2022/07/30(土) 17:48:55 ID:lDkW8Lp7M.net]
https://www.google.co.jp/search?q=raspberry+pi+%E9%96%8B%E7%99%BA%E8%A8%80%E8%AA%9E

985 名前:デフォルトの名無しさん (ワッチョイ 7a63-dSCr) mailto:sage [2022/07/30(土) 17:50:58 ID:rf6S0zxh0.net]
パソコンで同じことやっても組み込みなんて言わないし

986 名前:デフォルトの名無しさん (ラクッペペ MMee-kNao) mailto:sage [2022/07/30(土) 18:00:48 ID:jaybBP1OM.net]
組み込みの開発はクロス開発が基本なのでパソコンはただの端末だけどね
プログラムはボード上のSoCで実行される

987 名前:デフォルトの名無しさん mailto:sage [2022/07/30(土) 19:32:55.53 ID:wZaxY20D0.net]
IoTにはC言語は深く入り込んでないのか

>>967
型推論付くってマジ?
個人的には嬉しい

988 名前:デフォルトの名無しさん mailto:sage [2022/07/30(土) 19:50:32.99 ID:zHogqexf0.net]
>>964
> 高レイヤーだと普通にリッチな言語が使われたりするのかな
複合機などはWebサーバー程度は普通に入ってるから設定画面等は HTML, JavaScript, CSS, Python を使ってたりする

IWS (Internal Web Server:HTML, JavaScript, CSS, Python)
https://dsp.konicaminolta.jp/best-program

もちろんOS上で動いてるし、でかいシステムだとPCその物を内蔵してたりすることもある
なのでこんなものが売られてる
https://jpn.nec.com/fc/index.html

989 名前:デフォルトの名無しさん mailto:sage [2022/07/30(土) 19:51:42.13 ID:DgXxKl0UM.net]
IoTというよりはスタンドアローン環境か小規模な独自ネットワーク程度の組み込み分野の方がC/C++利用は多いと思う



990 名前:デフォルトの名無しさん mailto:sage [2022/07/30(土) 23:12:48.90 ID:wZaxY20D0.net]
>>974
こういう機材に囲まれたことないなー
俺はIoTは名前だけでほんとに実感がない

991 名前:はちみつ餃子 mailto:sage [2022/07/30(土) 23:53:43.60 ID:B4kVDCsM0.net]
>>969
機器に「組み込まれ」ているなら組み込みと呼んでいいだろう。
パソコンに近い構成にしてパソコンでも使えるソフトウェアを活用する場合があるというのは結果論だよ。

992 名前:デフォルトの名無しさん mailto:sage [2022/07/31(日) 00:41:41.63 ID:n00x/A2v0.net]
そうなるとPC使っていても組み込み扱いして良いと言うことになりますよね
近い構成どころか、何でもありになりそう

993 名前:はちみつ餃子 mailto:sage [2022/07/31(日) 01:25:42.56 ID:9sXTRHUo0.net]
そうだよ。
技術的な実態としてはそんなにはっきりした境界がない。 なんでもありだ。
用途の側でふんわりと分野が分かれてる。

994 名前:デフォルトの名無しさん mailto:sage [2022/07/31(日) 01:39:56.41 ID:AA5JChgka.net]
組込とハード制御的なやつの混同はよくありますね

995 名前:デフォルトの名無しさん mailto:sage [2022/07/31(日) 06:39:14.45 ID:1QnevV7r0.net]
>>961
Cは枯れた言語で今さら新機能は誰も望んでないからな
むしろ余計なことをしてくれるなと

996 名前:デフォルトの名無しさん mailto:sage [2022/07/31(日) 14:01:45.17 ID:k/gcENLBM.net]
古いソースが問題なくコンパイル出来ないと、それはそれで問題にされる。
今でもトライグラフ受け入れないと駄目なんだろう

997 名前:ハノン mailto:sage [2022/07/31(日) 17:43:38.22 ID:E3I5T4z5H.net]
>>981
C99 の C++ との互換性がまったく取れていない変てこ機能はさっさと削除してほしいものです
いまや私は C のソースを書くのに C++ コンパイラが通るか試してみる体たらく、あれらはいったいなんなんだ?

998 名前:はちみつ餃子 mailto:sage [2022/07/31(日) 19:20:45.67 ID:9sXTRHUo0.net]
今回「削除」になったのはいわゆるK&Rスタイルの関数定義くらいだな。
いずれ削除するということは以前から書かれてたし、
習慣的にも行儀が悪いという考え方が支配的だから
これで問題が起こるなら長い移行期間中に対応できてなかったほうが悪いと言ってよかろ。

999 名前:デフォルトの名無しさん mailto:sage [2022/07/31(日) 19:35:38.56 ID:n00x/A2v0.net]
削除って事は、古いソースのコンパイルはもはや出来ないと言うことなんでしょうか
いや、なに、クラシックカーに乗ってみたい位の好奇心ですけど



1000 名前:アリ人間 mailto:sage [2022/07/31(日) 19:46:09.16 ID:sdKo2iJ+d.net]
歳をとるということ 〃
シワが増えるということ 〃

なのに
ぼくたち
私たちは 〃

なぜ、最新機種で進化の止まった古臭いコンパイラを使うのでしょうか
でしょうか

1001 名前:はちみつ餃子 mailto:sage [2022/07/31(日) 20:23:09.10 ID:9sXTRHUo0.net]
>>985
削除された機能を使っていればそういうことになるが、
そもそも C で書かれたプログラムなんてどこかしらで環境依存な部分があるもんだし、
よほど配慮されたものでない限り古いコードは素直には動かないのが普通だろう。

まあ C23 が出来たからと言って C89 (に対応したコンパイラ) が直ちに消滅するわけでもないし、
なんだかんだであと二十年くらいたっても C89 派がそれなりにはいそうな気がする。

1002 名前:デフォルトの名無しさん mailto:sage [2022/07/31(日) 20:35:31.51 ID:1QnevV7r0.net]
K&R CこそCの面白さの塊なんだけどな
GCCが「カバにダンスを踊らせるのはあまり面白くない」なんて言ってた人もいるように
歳月とともに雁字搦めになっていく流れは酷くつまらない

1003 名前:デフォルトの名無しさん mailto:sage [2022/07/31(日) 20:47:12.68 ID:TVIRLEiRH.net]
>>988
でもね、C のコンパイラは C で記述してほしかったですね
確かにカバの調教は難しいのかもしれませんが
というか、gcc をコンパイルするためだけの c で書かれた c++ コンパイラって需要ありますかね?

1004 名前:デフォルトの名無しさん mailto:sage [2022/07/31(日) 20:51:31.04 ID:PC792jYOa.net]
>>988
無理すんなよ

1005 名前:蟻人間 mailto:sage [2022/07/31(日) 20:59:27.98 ID:sdKo2iJ+d.net]
そろ次スレ

1006 名前:デフォルトの名無しさん mailto:sage [2022/07/31(日) 21:03:23 ]
[ここ壊れてます]

1007 名前:.63 ID:n00x/A2v0.net mailto: ラージモデルでFarポインタ使いまくったプログラム合ったけど、
今は流石に見るのも嫌だと思う
何言ってるか分からないと思うが、俺も分からない
[]
[ここ壊れてます]

1008 名前:デフォルトの名無しさん mailto:sage [2022/07/31(日) 21:17:26.94 ID:UwyiR8NW0.net]
>>992
むしろnearポインタの方が面倒だと思うが...

1009 名前:デフォルトの名無しさん (オッペケ Sr05-5tLW) mailto:sage [2022/08/01(月) 08:38:31 ID:wVsEVhkpr.net]
あり人間とかキチガイ、こっちでも頓珍漢なこと書いてるのか



1010 名前:ハノン mailto:sage [2022/08/01(月) 19:47:44.58 ID:kaXTkJ9F0.net]
>>992
ラージモデルの far ポインタでしょう?別に far とか書かなくても普通にポインタを書けば far ポインタになったはず
であれば、あとは 64kb の壁を意識してむやみにポインタのインクリメントをせずに上手に部分にわければなんとかなったでしょう

far ポインタでの経験はいろんな場所で活かせる貴重な体験だと思いますよ
私は試食版 LSI-C のスモールモデルで陽に far を指定して far ポインタをバリバリつかっていましたよ
スモールモデルだからコード領域はせまいけれども(near コールしか使えない)、far と書けばデータは 640KB までフルに使えましたし

1011 名前:デフォルトの名無しさん (ワッチョイ 16ae-G1eK) [2022/08/01(月) 20:05:11 ID:4CMby4Hu0.net]
インテルのクソ設計でみんな迷惑してたってだけの話
K&R Cの楽しさとは全く何の関係もない
68kと86系は異次元の世界だった

1012 名前:デフォルトの名無しさん mailto:sage [2022/08/01(月) 20:55:56.73 ID:4h+jHRsn0.net]
>>995
テキトー書く前に8086 メモリーモデル とか near far huge とかでググってから出直してこい

1013 名前:ハノン mailto:sage [2022/08/02(火) 07:34:13.90 ID:QS3wPWC90.net]
>>997
私の認識であってますよ
ラージモデルのデフォルトポインタ(データ・コードとも)は far ですし、スモールモデルはどちらも near
しかしスモールモデルでも far ポインタは far と陽に宣言すれば使えるんですよ…

1014 名前:デフォルトの名無しさん mailto:sage [2022/08/02(火) 11:58:06.82 ID:ziGJzmHZd.net]
Windows16ビットのCでは16ビットハンドルを架空の構造体へのnearポインタとして実装してたな(#define STRICTした場合)
例えばデバイスコンテキストハンドルをビットマップハンドルに代入しようとするとtype mismatchエラーになってすぐわかる
STRICTでないと単なる本来の16ビット整数として扱われ混同しても通ってしまう
win32ではnearがないので普通の32ビットポインタになってしまいメモリがちょっともったいない

1015 名前:デフォルトの名無しさん [2022/08/04(木) 18:41:17.13 ID:+TMVVsOn0.net]
>>92push(保存)してpop(書き戻し)してるから結局pushしたときのデータになる
popとpushの間のややこしいとこはシカトな

1016 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 222日 6時間 29分 31秒

1017 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<258KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef