[過去ログ]
C言語なら俺に聞け 160 (946レス)
C言語なら俺に聞け 160 http://mevius.5ch.net/test/read.cgi/tech/1672191630/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
917: デフォルトの名無しさん (ワッチョイ 2d63-r2C4) [sage] 2023/04/12(水) 14:05:32.31 ID:NgkNjGWQ0 struct X; void func(struct X[]); //error struct Y { int a; }; void func(struct Y[]); //ok 不完全型の場合、仮引数の[]はポインタにならない?? ちな、gccではエラー、clでは通る http://mevius.5ch.net/test/read.cgi/tech/1672191630/917
918: デフォルトの名無しさん (スップ Sd82-qF+M) [] 2023/04/12(水) 14:17:34.62 ID:mayblUPzd C++だと通ったね gcc/clangのCだとX[]は許されないけどX*は許される 関数宣言より前にX型の定義がないとコンパイルが通らなかった http://mevius.5ch.net/test/read.cgi/tech/1672191630/918
919: デフォルトの名無しさん (ワッチョイ 2d63-r2C4) [sage] 2023/04/12(水) 14:55:48.73 ID:NgkNjGWQ0 どっちが正しいのかね http://mevius.5ch.net/test/read.cgi/tech/1672191630/919
920: デフォルトの名無しさん [sage] 2023/04/12(水) 15:04:32.82 ID:219MxBT/0 >>907 馬鹿な私に少しだけアドバイスを それってsize_tのビット幅 < システム(OS)のビット幅と言う条件下での話なんでしょうか? size_tがシステム(OS)のビット幅と同じならメモリで管理できるものは必然的にsize_tでも表現できると思うのですが メモリ上で管理できているゼロ終端文字列をsize_tで表現できない場合ってあるんですか? まあ一部の組み込みとかならあるかも知れませんが…… けどそういう環境の場合strlenなどのsize_tで返す場合でも表現できなくなるわけで、結局size_tに依存することになってどっちでも同じじゃないかと思うんですがどうなんでしょうか? http://mevius.5ch.net/test/read.cgi/tech/1672191630/920
921: デフォルトの名無しさん (ワッチョイ 6ecf-Rzwh) [sage] 2023/04/12(水) 15:07:46.44 ID:gccG0Jwg0 >>919 規格は知らんけど配列とポインタは違うんだからエラーで弾くのは正論だと思うけどね 通す処理系はその後の整合性をユーザーが担保する前提の思想なんでしょ http://mevius.5ch.net/test/read.cgi/tech/1672191630/921
922: デフォルトの名無しさん (ワッチョイ 2d63-r2C4) [sage] 2023/04/12(水) 15:09:16.06 ID:NgkNjGWQ0 >>921 仮引数に限っては*と[]は同じはず 不完全型だけ例外というのは気持ち悪い http://mevius.5ch.net/test/read.cgi/tech/1672191630/922
923: デフォルトの名無しさん [sage] 2023/04/12(水) 15:15:29.08 ID:219MxBT/0 >>908 もう一つ無知なる私にアドバイスをお願いします size_t len までは文字を格納出来ると>>907から読み取りましたが sizeof(size_t)==sizeof(int) の場合 vector v のサイズがINT_MAX以上だった場合、 i < (int)v.size() ではプログラマーが予期しない動作になりませんか? http://mevius.5ch.net/test/read.cgi/tech/1672191630/923
924: デフォルトの名無しさん (ワッチョイ 412d-dXWb) [sage] 2023/04/12(水) 15:27:40.89 ID:7SV2gFKB0 size_t が符号なし整数型 int が符号付き整数型 http://mevius.5ch.net/test/read.cgi/tech/1672191630/924
925: デフォルトの名無しさん (ワッチョイ 6ecf-Rzwh) [sage] 2023/04/12(水) 15:34:06.47 ID:gccG0Jwg0 >>922 はずだかなんだか知らねーけど、そんなことはどうでも良くてサイズの分からないオブジェクトの配列は作れんって言ってんだよ 操作上の違いはともかく配列として宣言したんなら関数内では配列として扱うってことを示唆してるわけだろ 仮にそのfuncだかって名前の関数の中にX[3]とかX+5って書かれたらどうやってアドレス出すんだってことよ 動作に違いがあるってことは規格がそれを許してる箇所なんだろうけど弾いてる処理系はそういう考えなんだろう http://mevius.5ch.net/test/read.cgi/tech/1672191630/925
926: デフォルトの名無しさん (ワッチョイ 2d63-r2C4) [sage] 2023/04/12(水) 15:53:08.00 ID:NgkNjGWQ0 >>925 仮引数はその場に配列を作り出したりはしないという基本が合意できない以上 これ以上おまえさんと話すのは無駄だな http://mevius.5ch.net/test/read.cgi/tech/1672191630/926
927: デフォルトの名無しさん (ワッチョイ 2d63-r2C4) [sage] 2023/04/12(水) 15:53:49.38 ID:NgkNjGWQ0 > 規格は知らんけど この時点で気付くべきだった http://mevius.5ch.net/test/read.cgi/tech/1672191630/927
928: デフォルトの名無しさん (ワッチョイ a910-Ay2p) [sage] 2023/04/12(水) 15:55:21.15 ID:1mphmeyq0 Cはアセンブラの代用言語。 http://mevius.5ch.net/test/read.cgi/tech/1672191630/928
929: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 423e-/aea) [sage] 2023/04/12(水) 16:36:09.61 ID:bThMVtxz0 >>917 規格的には (関数定義の一部ではない) 宣言の段階なら不完全型であることを許しているように読める。 C99 だと 6.7.5.3 の第 12 段落に書かれている。 > If the function declarator is not part of a definition of that function, > parameters may have incomplete type and may use the [*] notation in their sequences of > declarator specifiers to specify variable length array types. > 関数宣言子が関数定義の一部ではない場合,仮引数の型は不完全型でもよく, > また宣言指定子列に [*] を使って可変長配列型を指定してもよい。 ちなみに GCC だと以下のようなものもエラーだが MSVC だと通る。 struct X; typedef struct X Y[10]; http://mevius.5ch.net/test/read.cgi/tech/1672191630/929
930: デフォルトの名無しさん (ワッチョイ 2d63-r2C4) [sage] 2023/04/12(水) 16:59:41.80 ID:NgkNjGWQ0 >>929 ㌧X 安心した http://mevius.5ch.net/test/read.cgi/tech/1672191630/930
931: デフォルトの名無しさん (ワッチョイ 495f-/aea) [sage] 2023/04/12(水) 23:57:31.43 ID:ysjFLZAD0 >>917 Cではエラーになるのが規格準拠の動作。 ただし宣言の形式を変えるだけで通る理不尽な制約でありC++では許されるように改められている。 https://stackoverflow.com/questions/50503501/an-error-about-c-struct-array-in-formal-parameter http://mevius.5ch.net/test/read.cgi/tech/1672191630/931
932: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 423e-/aea) [sage] 2023/04/13(木) 00:37:34.59 ID:y5cvZaYN0 >>931 そこでも言及されてるけど 型調整 (配列がポインタに読み替えられる) が優先されるか配列宣言子としての解釈が優先されるかって曖昧じゃない? 読み替えより先に配列宣言子として解釈すべきと確信できるような記述ってある? 常識的には曖昧なら厳しい側の制約で解釈すべきだわなーとは思うけど陽には書かれてないように思う。 http://mevius.5ch.net/test/read.cgi/tech/1672191630/932
933: デフォルトの名無しさん (ワッチョイ 02ad-Ay2p) [] 2023/04/13(木) 02:04:44.32 ID:o3x890Fi0 >>907 昔々の PASCAL はそんな感じだったな。先頭1バイトに文字列のバイト数が入っていてその後に文字列がある。 当然それだと255バイトまでしか入らないのでもっと長い文字列を扱いたい時に苦しむことになる。 まあでも 8 bit とか 16 bit CPU のマイコンやパソコンにそういう高い要求は最初の頃はあまりなかったのでなんとかなっていた。 http://mevius.5ch.net/test/read.cgi/tech/1672191630/933
934: デフォルトの名無しさん (ワッチョイ 495f-/aea) [sage] 2023/04/13(木) 02:23:46.11 ID:jklAk1E50 >>932 プログラム内に制約 (constraint) 違反がある状態なので、前後関係がどっちだろうと 少なくとも制約違反について診断メッセージを出力しないと規格準拠とは言えない。 > A conforming implementation shall produce at least one diagnostic message ... > ... if a preprocessing translation unit or translation unit contains a violation > of any syntax rule or constraint, ... 「通る」が警告も出ずプログラム実行までできる状態と解釈してたけど、 エラーにはならないものの警告が出ているならそれも規格準拠とは言えそう。 http://mevius.5ch.net/test/read.cgi/tech/1672191630/934
935: デフォルトの名無しさん (ワッチョイ 2d63-r2C4) [sage] 2023/04/13(木) 08:28:10.40 ID:zEEI4t8g0 https://www.open-std.org/jtc1/sc22/wg14/www/docs/dr_047.html 仮引数の[]は、一旦は配列として受理し、その後でポインタに調整されるってことか http://mevius.5ch.net/test/read.cgi/tech/1672191630/935
936: デフォルトの名無しさん (ワッチョイ 2d63-r2C4) [sage] 2023/04/13(木) 08:28:50.25 ID:zEEI4t8g0 VCで通るのは、VLAがないからってこと? http://mevius.5ch.net/test/read.cgi/tech/1672191630/936
937: デフォルトの名無しさん (スップ Sd82-VdbI) [sage] 2023/04/13(木) 23:35:55.91 ID:DvwX4ZoKd 間違ってる http://mevius.5ch.net/test/read.cgi/tech/1672191630/937
938: デフォルトの名無しさん (ワッチョイ 6e63-Ay2p) [sage] 2023/04/13(木) 23:48:57.98 ID:wWKtbXV/0 マスク無死でラーメン食いたい奴は、まず住所を書いて見てよ その場所にノーマスクで食えるラーメン屋作らないといけないんだろ? 政府が作るのかな? http://mevius.5ch.net/test/read.cgi/tech/1672191630/938
939: デフォルトの名無しさん (ワッチョイ 6e63-Ay2p) [sage] 2023/04/13(木) 23:55:11.99 ID:wWKtbXV/0 ごめん、誤爆 http://mevius.5ch.net/test/read.cgi/tech/1672191630/939
940: デフォルトの名無しさん (ワッチョイ 02ad-Ay2p) [] 2023/04/13(木) 23:55:19.80 ID:o3x890Fi0 はあ http://mevius.5ch.net/test/read.cgi/tech/1672191630/940
941: デフォルトの名無しさん (ワッチョイ 424b-jq58) [sage] 2023/04/14(金) 01:01:11.22 ID:E99e4anP0 そのキモいレスをどこで発表するつもりだったのか http://mevius.5ch.net/test/read.cgi/tech/1672191630/941
942: ◆QZaw55cn4c (ワッチョイ 07e6-DPrL) [sage] 2023/04/15(土) 19:42:43.70 ID:JbgATxBi0 最近のLANカードで他力給電のものばかりのようですね、クロスケーブルでピアツーピアできるPCIe のカードって存在しないものですかね… 結局 hub を使っちまった、もったいないなあ http://mevius.5ch.net/test/read.cgi/tech/1672191630/942
943: ◆QZaw55cn4c (ワッチョイ bfba-DPrL) [sage] 2023/04/16(日) 20:11:08.29 ID:4UlFU6Wr0 chatGPTって面白いね…もうgoogle はいらないや http://mevius.5ch.net/test/read.cgi/tech/1672191630/943
944: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5f3e-S3w6) [sage] 2023/04/16(日) 21:13:37.76 ID:Ot5nnykg0 C スレで言うことか? http://mevius.5ch.net/test/read.cgi/tech/1672191630/944
945: デフォルトの名無しさん (ワッチョイ 2763-2Cuq) [sage] 2023/04/16(日) 21:23:02.75 ID:H2kHWHvu0 人工知能とはなんたるや、これがわかってないやつ多いのは仕方ないけど ム板でこれは由々しきことだな http://mevius.5ch.net/test/read.cgi/tech/1672191630/945
946: デフォルトの名無しさん (ワッチョイ 7f63-sFbk) [sage] 2023/04/16(日) 21:48:52.61 ID:zHRI9OsR0 煽ってるだけやろ http://mevius.5ch.net/test/read.cgi/tech/1672191630/946
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.018s