返信する: 汎用質問板



オプション

参照

Re: D言語でC言語のexitにあたる関数
投稿者: ゲスト 投稿日時: 2010/1/11 7:09
引用:
assertはD言語の機能の中でも、契約プログラミングを行う上で比較的重要な役割を持っています。
D言語のassertは、C言語のassertとは違い、言語組み込みの機能となっています。(C言語のassertはマクロです)
確かにC言語では<assert.h>をインクロードして「assert()」マクロを使用する、でしたよね?
でD言語は組み込みだから、外部からインポートしなくてもオーケー。

けれど、そういうことは「assert」を使い始めて直ぐに知りました。
(裏を返せば、最初に使ったときに、import assert と書いてしまい。
コンパイルに怒られた。)

引用:
使い方はC言語のassertと同様ですが、今回のように、プログラムを途中でabortするために利用して良い機能ではありません。
assertは、絶対に真にならなければならない条件を記述する機能となっています。assert(0)の場合は、その場所には絶対に来ないことを表明するためのものです。
また、assert文はリリースコンパイル時には実行されません。つまり、実行されないと困ることを書くことはできません。
ああ、なるほど。大体、分かりました。
つまり要約すると、「''強制終了するために利用するのは賢い使い方ではない。assert(0)はここに来るはずないというプログラマーへのフラグであり。更にはassert文はリリース時には意味がないので、終了を渡したければthrowが普通というか適切''」と。

引用:
などのように使います。
簡単に言うと、「絶対にこうなっていなければおかしい」という表明文を書くことで、もし万が一プログラマの勘違いやミスで「そうなっていなかった場合」に、プログラムを強制終了することでバグを気づきやすくするためのツールです。
つまり簡単にデバックするためのモノであり、プログラマーお助け機能という事ですね。
うむむ、それなら使いこなせないと損ですな。
というかD言語の目玉の一つなので、これは利用しなければ。

引用:
もしわかりきっていることだとしたら申し訳ありませんが
全然、分かっていなかったので、とても助かりました。
C言語でも初級者でさえ行けなかった脱初心者なので、
こういう事をドンドン言ってもらえると、とても助かります!

SHOOさん、何回もありがとうございました。
ここに質問して良かったです!
メインメニュー

ログイン

ユーザー名:


パスワード:





パスワード紛失  |新規登録

Menu