トップページ > 過去ログ > 記事閲覧
そーいえば
名前:憂煉 日時: 2007/07/26 22:11

STLの内部で{...}というものをよく見かけるんですが なんですか?これ。...って引数の数が不明な関数に使うというのはしっているのですが〜

Page: 1 |

Re: そーいえば ( No.1 )
名前:Prometheus 日時:2007/07/27 10:34

 STLで ...ですか?  具体的にどこで使われてますか(コンパイラ名とかヘッダ名とか)?
返答遅くてすいません ( No.2 )
名前:憂煉 日時:2007/08/03 21:07

コンパイラはbcc32です。デバッグ中に見かけるのでヘッダファイル名はわかりません。
Re: そーいえば ( No.3 )
名前:Prometheus 日時:2007/08/04 01:28

 catch(...)でしょうか?  これは全ての例外を受け取ることができる try-catch構文の catchの部分です。  STLの内部処理の途中で(tryの中)、何かの処理に失敗し例外が発生した場合 処理の後処理を行うためにそういうコードが書かれています。  例外発生時は、何かしらの例外オブジェクトを伴って投げられ、 catch節側でも型を指定してその例外を受け取るのですが、 ... を指定すると 全ての例外をcatch節側で拾うことができます。  例えば try { insert(begin(), n, value); } catch(...) { __deallocate_buffers(); throw; }  のようなコードの場合、insertの処理の途中で何か例外が発生したら、 __deallocate_buffers()を実行する、ということになります。  insertの処理が無事成功すれば __deallocate_buffers()は実行されません。
Re: そーいえば ( No.4 )
名前:憂煉 日時:2007/08/04 11:17

ご返答ありがとうございます。try-catch構文はあまり使わないのでとても勉強になりました。 でも、その…ええと、”...”ではなく”{...}”なんです。関数の処理部分の定義にもみえるのです。説明が足りなくてすいませんでした。
Re: そーいえば ( No.5 )
名前:Prometheus 日時:2007/08/04 16:25

 うーん、grepしても出てこないので、ヘッダが特定できないと何とも言えないですね。  ひょっとして、お使いになっているツールが勝手に何かの意味で(例えば省略とか)、 そういう表現をしている可能性はないでしょうか。
Re: そーいえば ( No.6 )
名前:優柔不断 日時:2007/08/04 16:55

STLのコードのコンパイル時にtypedefやtemplateなどを展開する時に、長くなる事があるらしいのですが、 それらが省略されてるということではないでしょうか?
Re: そーいえば ( No.7 )
名前:憂煉 日時:2007/08/04 22:13

うーん、最近はあまり忙しくなくてミスも少ないからデバッグもしないのでヘッダ名を割り出そうにもできないんです。優柔不断さんのおっしゃる通りデバッガが長い文字列を省略しているだけかもしれません。 また見つけたらそのときに調べます。

Page: 1 |