- 1 名前:デフォルトの名無しさん [2020/09/28(月) 14:41:30.00 ID:QxfbhGyV0.net]
- !extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください) C言語の話題のみ取り扱います C++の話題はC++スレへ 質問には最低限の情報(ソース/コンパイラ/OS)を付ける 数行で収まらないソースは以下を適当に使ってURLを晒す https://paiza.io/ https://ideone.com/ codepad.org/ 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言語なら俺に聞け 155 https://mevius.5ch.net/test/read.cgi/tech/1589120427/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
- 321 名前:デフォルトの名無しさん [2020/12/10(木) 08:18:36.14 ID:yWf2E74j0.net]
- C言語にテンプレート機能だけつける方法ないの?
- 322 名前:デフォルトの名無しさん mailto:sage [2020/12/10(木) 08:33:48.40 ID:1ebLrqpT0.net]
- #include <tgmath.h>みたいの?
- 323 名前:はちみつ餃子 mailto:sage [2020/12/10(木) 11:36:21.24 ID:p57PMoZs0.net]
- >>320
学術的な分類はよく知らないけどそれはアドホック多相に分類されるものじゃないの? テンプレートはパラメトリック多相的なものなので多相を実現するものという意味では近いけど、 使い勝手としてはそんなに近くない。 >>319 「だけ」っていっても C++ のテンプレートは C++ の型システムやなんやかんやと一体のものなので、 テンプレートだけ抜き出して C に入れるみたいなことは出来ないでしょ。 C 独自のテンプレートみたいなのを考えるくらいなら C++ を使えやって話になるだろうし。 >>315 マクロ展開は文法の解釈に先立って実行されるので、 マクロ展開時にプログラムの内容を見て分岐することは出来ない。 構造体を元にして真偽値を生成するような「展開形」を思いつけば実行時に分岐することは 出来るのかもしれないけど思いつかないなぁ。
- 324 名前:デフォルトの名無しさん mailto:sage [2020/12/10(木) 13:40:39.75 ID:Rt1ylxrY0.net]
- 開発環境の都合で Cしかないので困ってるとすれば
C++ 食って C 吐き出す中間のコンパイラがあればいい ってことに
- 325 名前:デフォルトの名無しさん mailto:sage [2020/12/10(木) 15:08:30.04 ID:cFFVV66u0.net]
- >>315
構造体に手を入れられるなら、ユニークなIDを割り当てて そのID見て、処理を切り替えて行く
- 326 名前:デフォルトの名無しさん mailto:sage [2020/12/10(木) 20:09:21.68 ID:CcbWokCZ0.net]
- >>317
あれ、C++も結局メンバーがなければコンパイル時に死亡するだけじゃ? ランタイムでどうこうするわけにはいかないんじゃ...
- 327 名前:デフォルトの名無しさん mailto:sage [2020/12/10(木) 21:28:27.30 ID:hyB2wVsLM.net]
- >>324
sfinaeがあるので死ぬ代わりにfalseを返す関数みたいなのが作れる ランタイムでどうこうしたければtype_info -> boolな関数を作ればいいが、型を追加するたびに変更が入ることになってtemplateほどの便利さはない
- 328 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 04:23:01.20 ID:p1x0IGcK0.net]
- C++をベターCとして使う、でいいんでねい?
- 329 名前:はちみつ餃子 mailto:sage [2020/12/11(金) 11:11:25.01 ID:NpU6prgS0.net]
- >>324
(たぶん公式な用語ではないけど) ハードエラーとソフトエラーという区分がある。 テンプレートの展開に失敗してコンパイルの失敗になってしまうハードエラーと、 テンプレートの次の候補を試すソフトエラー。 で、そのソフトエラーを上手いこと利用して分岐するのが SFINAE ってわけ。 C++20 からはコンセプトが入ったのでそれもかなり楽に出来るようになった。
- 330 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 13:56:53.94 ID:VMKMxeJn0.net]
- ここはC言語スレではなくC++勧誘スレになったのか
- 331 名前:はちみつ餃子 mailto:sage [2020/12/11(金) 14:34:30.55 ID:NpU6prgS0.net]
- 無理やりでも C で出来るならいいんだけど、出来ないんだもの……。 しゃーない。
- 332 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 14:45:28.79 ID:VMKMxeJn0.net]
- 〜ならこうやれるって
一種の荒らしだからね
- 333 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 16:54:58.94 ID:p1x0IGcK0.net]
- void func();
void func(int); void func(double); void func(void*); auto func(int) -> enable_if_t<false, int>; みたいな多重定義があるときに func(1); と呼び出されたときに、候補1つずつ 呼び出すとしたら何が起きるのかをリストアップして void func(); //error void func(int); //exact void func(double);//conversion void func(void*);//error auto func(int) -> enable_if_t<false, void>; //error そこからerrorになったのを外すってだけだかんな
- 334 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 17:55:15.27 ID:o4C6fSAI0.net]
- C言語でどうやって多重定義を実装するのかな?
可変長引数をこねくり回せば出来るかもしれないが
- 335 名前:はちみつ餃子 mailto:sage [2020/12/11(金) 18:02:13.48 ID:NpU6prgS0.net]
- >>332
C11 から _Generic という機能で型によって自動で呼び分けることは出来る。
- 336 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 18:20:43.38 ID:o4C6fSAI0.net]
- 新しい機能を使うのではなく、もうちょっと工夫してみて
- 337 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 18:44:44.22 ID:7UnfkYH50.net]
- 何その上から目線
- 338 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 18:47:44.91 ID:o4C6fSAI0.net]
- それがC言語の醍醐味
- 339 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 18:56:25.10 ID:o4C6fSAI0.net]
- サバイバルナイフ一本でジャングルで暮らしていく位の気概がないとC言語は使えない
- 340 名前:はちみつ餃子 mailto:sage [2020/12/11(金) 18:56:28.63 ID:NpU6prgS0.net]
- >>334
新しいって言ってもなぁ。 今年は 2020 年なんだぞ。
- 341 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 18:57:16.38 ID:o4C6fSAI0.net]
- C11スレでも立ててそこでやったら?
- 342 名前:デフォルトの名無しさん [2020/12/11(金) 19:36:39.77 ID:Z3aKNSgT0.net]
- Cならポインタを積極的に使う。
- 343 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 19:42:20.97 ID:s+Xx8Zn+0.net]
- C11の話題でわざわざ新スレとかこいつ頭おかしいの?w
- 344 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 19:48:16.88 ID:o4C6fSAI0.net]
- ならば、このスレの話題は、汎用的なC言語で良いでしょう
新しい規格を話題にしたいなら、それ用のスレを立ててすれば良い
- 345 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 19:53:34.25 ID:nEgtG7R60.net]
- >>342
むしろ古い規格のみを話題にしたいお前が他所に行けば円満解決だろう
- 346 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 20:09:21.63 ID:o4C6fSAI0.net]
- ここは初代のC言語スレ
- 347 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 20:10:26.40 ID:o4C6fSAI0.net]
- 新しい規格は新しい器でどうぞ
- 348 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 21:31:36.15 ID:7UnfkYH50.net]
- >>343
賛成
- 349 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 23:01:06.49 ID:u7x51CWk0.net]
- >>344
アホ、>>1を見てこい > C11 > www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf
- 350 名前:はちみつ餃子 mailto:sage [2020/12/12(土) 09:10:37.90 ID:UUApGKPR0.net]
- C21 は 2021 年に予定されてるけど、正式発効はいつものように遅くなるかなぁ。
次スレには間に合わなさそう。 細かいところで C++ に追従しているのがありがたい。
- 351 名前:デフォルトの名無しさん mailto:sage [2020/12/12(土) 20:24:51.48 ID:+E0Q9Nw10.net]
- テンプレ直さなきゃな
現行規格はC11ではなくC18だ
- 352 名前:デフォルトの名無しさん [2020/12/13(日) 02:41:25.02 ID:3BYpAKtx0.net]
- 1スレの1だけど、みんな元気だなw
- 353 名前:デフォルトの名無しさん mailto:sage [2020/12/13(日) 02:52:26.43 ID:dBxf4Vg90.net]
- わー、凄いですねー(棒
- 354 名前:デフォルトの名無しさん mailto:sage [2020/12/17(木) 09:46:05.20 ID:4VSV+Zch0.net]
- https://text.baldanders.info/remark/2016/06/code-by-hardware-engineer/
ニヤニヤ笑ってしまった
- 355 名前:デフォルトの名無しさん mailto:sage [2020/12/17(木) 13:31:23.27 ID:AFn1O2bR0.net]
- おれのハード屋の父親もre2cが吐いたようなコードを書いてた記憶がある
- 356 名前:デフォルトの名無しさん [2020/12/25(金) 09:10:24.53 ID:9Fso0P460.net]
- int a[6];
と int *a = malloc(6 * sizeof(int)); の違いは何ですか?
- 357 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 11:15:33.22 ID:4TR/yfFq0.net]
- >>354
記憶域期間 storage duration が違う void func() { int a[6]; } //ここで自動開放 automatic storage duration int a[6]; //最後まで解放されない static storage duration mallocは当たり前だがfreeで手動開放 C++にはdynamic storage durationというのがあるが Cでは言語自体にそのような概念はなく malloc/freeというアプリが提供する機能ということになっている
- 358 名前:はちみつ餃子 mailto:sage [2020/12/25(金) 11:18:10.08 ID:My/Ukrd40.net]
- >>354
違うものを持ち出して何が違うかと問われても困るんやが……。 <
- 359 名前:br> 背景を全部説明するとだいぶん長くなるので。
とりあえず結果的に出来る配列オブジェクトを比較するならオブジェクトの生存期間 (lifetime) が違う。 前者は自動記憶域期間、後者は割り付け記憶域期間という分類になる。 変数 a の違いという意味では前者の型は int[6] で後者は int* ということになる。 ただし配列は暗黙の型変換でそれの先頭要素を指すポインタになるので、 かなり共通した記法で扱える。 [] - [ここ壊れてます]
- 360 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 11:29:13.76 ID:4TR/yfFq0.net]
- 字が違うことくらい言わんでも解っとるやろ
int a[6]; は sizeof a / sizeof a[0] でサイズを取得できるが mallocで割り付けたメモリはサイズを聞けず自分で管理せねばならない
- 361 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 12:31:04.53 ID:0FtKncKUM.net]
- 目から鱗どころか、天が落ちるぐらい面白い説明ができないのか。
無芸な奴らだ。
- 362 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 12:39:14.80 ID:3NwCUk3p0.net]
- ポインタ int *p; はインクリメント可能で p++ は合法
配列 int a[6]; はインクリメント不可能で a++ はエラーになる
- 363 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 12:51:59.76 ID:D8aGfpPud.net]
- >>358に期待
- 364 名前:デフォルトの名無しさん [2020/12/25(金) 13:23:43.17 ID:9Fso0P460.net]
- >>354
メモリ配置の連続性はどちらも保障されていることで良いですか?
- 365 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 14:43:22.97 ID:3NwCUk3p0.net]
- 配列は先頭から確保された領域の次のところを指せるまでは連続性が保障されてるんじゃなかったかな
規格あたるのはまかせた (malloc の戻りは… 配列に準じるように実装されてそうではある)
- 366 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 14:54:43.85 ID:qJluI3Ne0.net]
- >>361
プログラムからの見た目はどちらも連続。 物理的に連続させたいならdma メモリ 確保とかでググる
- 367 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 15:09:30.51 ID:2V7uRClp0.net]
- int a[6];はローカル変数ならスタック領域に確保、グローバル変数や
int *a = malloc(6 * sizeof(int));はヒープ領域に確保 でいい?
- 368 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 15:19:15.56 ID:qJluI3Ne0.net]
- ダメ
グローバル変数はデータ領域とかbss領域とかいろいろ
- 369 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 18:54:05.01 ID:Tea3EQhG0.net]
- アドレス見ない, かつ定数だと何処にも領域取らない可能性まである
- 370 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 20:30:05.07 ID:EiswCiht0.net]
- そんなこと言い出したら
ローカル変数だってスタックじゃないかもしれない
- 371 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 20:39:01.52 ID:MidTJiO80.net]
- どこにあるかよりどれだけ生きているかの生命期間が大事ね
- 372 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 21:22:39.71 ID:EiswCiht0.net]
- 速度も
- 373 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 21:23:50.85 ID:EiswCiht0.net]
- 生命期間も実際はC言語の文法通りじゃない
- 374 名前:デフォルトの名無しさん mailto:sage [2020/12/26(土) 05:33:54.37 ID:ekLZAtHZ0.net]
- >>361
> 7.20.3.3 malloc 関数 > 機能 malloc 関数は,大きさがsize であるオブジェクトの領域を割り付ける。 領域とは連続した区間をいう
- 375 名前:デフォルトの名無しさん mailto:sage [2020/12/26(土) 07:58:20.12 ID:J4yOWW3+0.net]
- メモリ(DRAM)上は連続してるとは限らない
C言語上連続として扱えるというだけ
- 376 名前:デフォルトの名無しさん mailto:sage [2020/12/26(土) 08:19:43.84 ID:ekLZAtHZ0.net]
- それを言うなら仮想記憶だろ
ページ境界をまたぐ場合実記憶が連続しているとは限らない その昔、ビット幅1bitのDRAMを8個パラってるのがあったけど だから何って話 それ言い出したらメモリセルのキャパシタは隣接してるのか
- 377 名前:デフォルトの名無しさん mailto:sage [2020/12/26(土) 08:29:01.69 ID:hSiLuJt/d.net]
- スレタイの俺って誰ですか?
- 378 名前:デフォルトの名無しさん mailto:sage [2020/12/26(土) 09:41:05.55 ID:Mx49Y/J60.net]
- >>373
> それ言い出したらメモリセルのキャパシタは隣接してるのか してないよ、アドレス線が入れ替わってる なのでメモリーテスターはアドレス線を入れ替える機能がついてたりする
- 379 名前:デフォルトの名無しさん mailto:sage [2020/12/26(土) 10:40:07.64 ID:IfMxsBFTd.net]
- >>366を言い出したからまねして見ただけ
- 380 名前:デフォルトの名無しさん mailto:sage [2020/12/26(土) 12:41:26.45 ID:0+ArpHnq0.net]
- 実記憶も連続していない
時々意識不明になってるはず ただ、その時の記憶がないだけ
- 381 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 07:49:35.18 ID:LdveQEJ20.net]
- 面倒くさい、特異な、一般人には無縁の仕様を考慮するのが当たり前って感じに持ち出して否定するから初心者が逃げていく・・・。
- 382 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 08:44:26.16 ID:G7B9oAoL0.net]
- Cでプログラミングする時に領域の連続性を気にするのは果たして初心者なのだろうか(´・ω・`)
- 383 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 09:28:54.37 ID:Q5Pp+CI0a.net]
- Cでどのくらいできれば
実際役に立つレベルでしょうか?
- 384 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 09:45:26.51 ID:ErVwTltE0.net]
- >>380
Cは言語仕様は小さいし重要なのはC自体が使えることではなくCを使ってその先で何をするかだから、C言語自体の基本的な仕様は完全にマスタしてるくらいでないとわざわざCを使う意味はないかなと思う
- 385 名前:デフォルトの名無しさん [2020/12/29(火) 06:32:49.03 ID:NanqjdNB0.net]
- iZ-Cのサンプルプログラム書き始めたので見てね。
https://sunasunax.hatenablog.com
- 386 名前:デフォルトの名無しさん mailto:sage [2020/12/29(火) 08:44:05.91 ID:gCTQzk+K0.net]
- >>379
デバイスドライバのぉ バッファをぉ 確保するときとかぁ ドキドキしちゃうぅ 初心者ですっ❤
- 387 名前:デフォルトの名無しさん mailto:sage [2020/12/31(木) 07:46:12.94 ID:mJm7tBE2d.net]
- >>361
mallocはNULLを返すこともあるので その場合は当然連続性は保証されない そのエラー処理も書いておかないといけない
- 388 名前:デフォルトの名無しさん mailto:sage [2020/12/31(木) 07:51:45.82 ID:/Sdg/sCQ0.net]
- mallocがNULLを返した場合は
割り付けが行われていないので 連続でも不連続でもない
- 389 名前:デフォルトの名無しさん mailto:sage [2020/12/31(木) 07:55:07.88 ID:/Sdg/sCQ0.net]
- 配列は連続領域が前提だから
E1[E2]が*(E1+E2)と等価となる 構造体も連続領域が前提だからこそ 配列にすることができる 不連続領域はリストや二分木などで むろん言語自体が提供するのではなく 言語を使ってプログラマが構築するものだ
- 390 名前:デフォルトの名無しさん mailto:sage [2020/12/31(木) 12:57:09.96 ID:mJm7tBE2d.net]
- >>354
さらに言うなら グローバル配列はコンパイル時に総数を決定しなければならないが ローカル配列とmallocを使った場合は 最初に人数を入力し、それに合わせた数の名前配列を確保するような作り方ができる ただしあまりにも大きいとローカルはスタックが溢れるしmallocはNULLを返す
- 391 名前:デフォルトの名無しさん mailto:sage [2020/12/31(木) 18:54:42.23 ID:/Sdg/sCQ0.net]
- mallocがNULLを返すのを実際に目撃したやついる?
malloc(2147483647)みたいなわざとらしい実験じゃなく実用で
- 392 名前:デフォルトの名無しさん mailto:sage [2020/12/31(木) 19:17:26.57 ID:lvvsunYH0.net]
- いますよ。
- 393 名前:デフォルトの名無しさん mailto:sage [2020/12/31(木) 19:34:52.29 ID:1/HNqY6i0.net]
- 目撃とかはよーわからんけど実用プログラムだとアロケーション失敗でログ採ったりしてるからそういうログは見たことあるよ
- 394 名前:デフォルトの名無しさん mailto:sage [2020/12/31(木) 20:41:44.50 ID:+fx38Mty0.net]
- 仮想記憶とか無いOSだとあっさり NULL 返してたな
- 395 名前:はちみつ餃子 mailto:sage [2020/12/31(木) 23:27:44.16 ID:xpX6Z+OE0.net]
- その質問を見てふと思ったことがあるんで便乗質問。
純粋にメモリが足りない (断片化で連続領域がないという場合を含む) という以外で malloc がエラーを返すことってある? バッファオーバーランとかでめちゃくちゃに書き換えて管理の整合性が壊れたとかいうのは無視して あくまでアプリケーションとしては C の仕様に則っているという前提で。
- 396 名前:デフォルトの名無しさん mailto:sage [2021/01/01(金) 00:09:31.83 ID:E41TLeHr0.net]
- 組み込みのちっちゃなマイコンなら普通
- 397 名前:デフォルトの名無しさん mailto:sage [2021/01/01(金) 00:12:43.64 ID:mwYi2zym0.net]
- マルチスレッドでヒープ領域が排他制御で使えないってのはありうる?
- 398 名前:デフォルトの名無しさん mailto:sage [2021/01/01(金) 00:20:48.66 ID:E41TLeHr0.net]
- さあ
- 399 名前:デフォルトの名無しさん mailto:sage [2021/01/01(金) 00:21:33.85 ID:FRLcRufg0.net]
- 吸い込んでくれ
- 400 名前:デフォルトの名無しさん mailto:sage [2021/01/01(金) 00:34:01.79 ID:ufA+vsC20.net]
- >>392 メモリクォータ違反とか?
- 401 名前:蟻人間 mailto:age [2021/01/01(金) 00:36:53.19 ID:cLHhn9Dx0.net]
- >>394
「malloc マルチスレッド」で検索すれば? 知らんけど。
- 402 名前:デフォルトの名無しさん mailto:sage [2021/01/01(金) 01:47:49.68 ID:gWHeIT9l0.net]
- >388
Win98か2000の頃にあったわ。 1kバイトぐらいのを数万回(ファイル数)mallocやろうとしたらNULL返した。 XPで試したらエラー出なかったけど。
- 403 名前:デフォルトの名無しさん mailto:sage [2021/01/01(金) 05:55:11.31 ID:ihSnxU6O0.net]
- 逆にメモリ不足以外でNULL返すことってあるのか?
- 404 名前:デフォルトの名無しさん mailto:sage [2021/01/01(金) 06:25:04.97 ID:DIBn3EXs0.net]
- malloc(0)とか
- 405 名前:デフォルトの名無しさん mailto:sage [2021/01/01(金) 12:48:57.97 ID:U0IfpguFd.net]
- malloc(負の数)も
- 406 名前:デフォルトの名無しさん mailto:sage [2021/01/01(金) 15:48:48.11 ID:1v7huw3N0.net]
- 負数は単に符号なしで評価してとんでもなくでかい領域を要求してるだけ?
- 407 名前:デフォルトの名無しさん mailto:sage [2021/01/01(金) 21:47:45.23 ID:DIBn3EXs0.net]
- だね
- 408 名前:デフォルトの名無しさん mailto:sage [2021/01/01(金) 22:22:16.08 ID:wEvOepYPd.net]
- sizeof(struct)*numとかごちゃごちゃ書くうちにうっかり0や負数になって…
というのはよくあった
- 409 名前:デフォルトの名無しさん [2021/01/02(土) 11:42:56.15 ID:QsP+Nlmq0.net]
- forループでunsignedで<0やって終わらないバグとかもあるな
- 410 名前:デフォルトの名無しさん mailto:sage [2021/01/03(日) 00:53:19.09 ID:ERUOHNUN0.net]
- >>406
それは正しい挙動じゃないかな。 強いて言えば、おせっかいでwarning出せばいい程度かと。
- 411 名前:デフォルトの名無しさん mailto:sage [2021/01/03(日) 11:06:33.61 ID:QdF5iATA0.net]
- >>407
正しい挙動 ≠ 想定した動作
- 412 名前:デフォルトの名無しさん mailto:sage [2021/01/03(日) 11:12:17.27 ID:3NmY3eCcd.net]
- この条件は必ずTRUEになりまっせー
というwarningはあったと思う
- 413 名前:デフォルトの名無しさん [2021/01/03(日) 11:41:35.97 ID:TDgWBZToF.net]
- <0は終わらないじゃなくて始まらないの間違いだった
- 414 名前:デフォルトの名無しさん mailto:sage [2021/01/03(日) 13:51:43.57 ID:3NmY3eCcd.net]
- unsigned int a;
for( a = 11; a > 0; a -= 2 ) ... こんな感じのを作ってしまったことはあったな… aは1のあと65535になるので永久に終わらず aは0になる可能性もあるので条件式ではwarningも出ず
- 415 名前:デフォルトの名無しさん mailto:sage [2021/01/03(日) 14:28:17.87 ID:izXBuwpQd.net]
- >>407
#defineの値によって警告でちゃうから おせっかいイラネ
- 416 名前:ビル・ジョブズ [2021/01/04(月) 00:09:11.84 ID:V9PboY9+0.net]
- mallocとか常に成功を返すんじゃない?
問題はそのアドレスに何か操作をした時。 MMUありの前提だけど。
- 417 名前:デフォルトの名無しさん mailto:sage [2021/01/04(月) 00:29:40.79 ID:NWAwlt7F0.net]
- 実行してみないと使えるか分からないとなると
医療関係では使用禁止になるな
- 418 名前:デフォルトの名無しさん mailto:sage [2021/01/04(月) 01:03:06.31 ID:PMQqdXD/0.net]
- validation 通らないだろうねぇ
- 419 名前:デフォルトの名無しさん mailto:sage [2021/01/04(月) 07:24:09.81 ID:Nz2iXOdN0.net]
- >>413
メモリーオーバーコミットの話をしたいんだろうけどLinuxとかでも設定によるし>>414の言うように医療やECU等のようにそんなもんが許されない組込系の機器もあるから環境によるとしか言えんわな
- 420 名前:デフォルトの名無しさん [2021/01/05(火) 12:05:40.60 ID:G8BimKKu0.net]
- 宇宙関係も無理やろね
- 421 名前:デフォルトの名無しさん mailto:sage [2021/01/05(火) 12:12:18.79 ID:8w5sr2J0d.net]
- 失敗が絶対に許されないならmallocとか使うな
スタティックで確保しろ
|

|