- 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
- 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]
- 傲慢か
既存のコード無視して上書き的なメンテするやつか?
|

|