- 1 名前:デフォルトの名無しさん [2007/07/26(木) 00:33:07 ]
- C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレに お願いします。 テンプレその他 >>2-15 付近参照 前スレ class C++相談室lt;part56gt; pc11.2ch.net/test/read.cgi/tech/1170343752/l50
- 152 名前:130 mailto:sage [2007/07/30(月) 02:30:11 ]
- >>150
出来ました! ロケールというものを設定しないといけなかったんですね! ロケールについて調べてみたらよくわからなかったんですが、 ロケールとはパソコンの情報の表示形式みたいなものと考えていいのでしょうか?
- 153 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 02:37:35 ]
- >>152
ロケールは貨幣や数値、時刻の形式なども扱うが、この場合は LC_CTYPEというカテゴリを指定してやることで、 文字エンコーディング(SJISだのEUC-JPだの)をCランタイムに 教えてやっている。「""」は、「実行環境に応じて良きにはからえ」という 意味だ。Cランタイムはそれに応じてワイド文字とマルチバイト文字の 変換を行う。
- 154 名前:130 mailto:sage [2007/07/30(月) 03:02:24 ]
- >>153
なるほど、だからロケールを設定してないときの読み込み方がおかしかったんですね わかりやすく教えていただきありがとうございました!
- 155 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 08:17:11 ]
- 型Tから型Uへの変換が存在するかどうかを調べるtemplateの手法ってありますか?
具体的には次のようなことをやりたいのですが… template<typename T> struct PtrWrapper { T* p; }; class A {...}; class B : public A {...}; PtrWrapper<A> a; PtrWrapper<B> b; a = b; // 可能 b = a; // 不可能
- 156 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 11:44:19 ]
- template <typename T, typename U>
class Conversion { typedef char Small; class Big { char dummy[2]; }; static Small Test(U); static Big Test(...); static T MakeT(); public: enum { exists = sizeof(Test(MakeT())) == sizeof(Small) }; }; int main() { using namespace std; cout << Conversion<double, int>::exists << endl << Conversion<char, char*>::exists << endl << Conversion<size_t, vector<int> >::exists << endl << Conversion<A*, B*>::exists << endl << Conversion<B*, A*>::exists << endl; } 詳しくは Modern C++ Design 参照。
- 157 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 16:10:51 ]
- iGoogleで複数のコンテンツを追加してみると、
追加したコンテンツをドラッグ&ドロップで移動できるのですが、 そのUIを、WinXPSP2上のVS2005 C++ Windowsフォームにて実装してみたくて調査中なのですが、 技術的に停滞中です。 フォームにPanelを配置し、そのパネルをドラッグ&ドロップすればよいのかと思うのですが、 パネルのドラッグ&ドロップが出来ません。。 何かサンプルありませんか?
- 158 名前:デフォルトの名無しさん [2007/07/30(月) 16:26:33 ]
- MFCのCOleDropTargetクラスあたりかなぁ?
- 159 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 17:46:58 ]
- ありがとうございます。
COleDropTargetですか。ちょっとみてみましたが、 楽チンポンとは行かないみたいですね。 ちょっと勉強にいそしみます。
- 160 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 00:30:10 ]
- >>156
ありがとう! ていうか解説読んで感動しました…
- 161 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 09:22:22 ]
- >160
どうせ中では同じようなことをやってるはずだけど、使えるなら Boost TypeTraits を使うのが楽。この場合は is_convertible
- 162 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 05:03:00 ]
- placement delete は
対応する placement new の実行中に例外が発生した場合に呼ばれるからという ただそれだけのために存在する、という認識で問題ありませんか?
- 163 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 06:18:29 ]
- え
- 164 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 06:24:12 ]
- struct s{ s(){puts("s");} };
と定義して struct s s_obj(); としてもコンストラクタが呼ばれないんですが、 俺何か間違ってるんでしょうか?
- 165 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 06:31:42 ]
- それは「struct sを返す関数」の宣言
- 166 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 11:23:21 ]
- struct s s_obj; としないといけない。
もっとも、s s_obj; で十分だが。
- 167 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 12:24:54 ]
- >>162
どうせ君は使わないだろうから問題ないよ。 人と話すときにはその話題避けてればいいんだし。
- 168 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 12:32:58 ]
- >>162
違う。正しくは 対応する placement new が成功した後のコンストラクタで例外が発生した場合に以下同文。
- 169 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 13:11:18 ]
- placement new というと、規格を見ると new の構文は
new-expression: ::(opt) new new-placement(opt) new-type-id new-initializer(opt) new-placement: ( expression-list ) と書いてあって、new-placement ってのはあらゆる引数リストを指す要素のようだけど、 引数つきの new は何でも placement new と呼ぶのか?
- 170 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 13:13:10 ]
- そういうこと。
最初に想定されたのが配置に関する制御だったので、 placement newと名付けられたが、 使ってみたら色々使い道があったというわけ。
- 171 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 13:17:43 ]
- Ruby のイテレータみたいなもんか。繰り返さなくてもイテレータ。
っつーことは、「いつもの placement delete」 には特に呼ぶ価値ないけど、 それ以外の placement delete には十分価値があるかもしれんっつーことか。
- 172 名前:デフォルトの名無しさん [2007/08/01(水) 21:46:24 ]
- RUBYYYYYYYYYYYYYYYYYYYYYYYY
- 173 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 21:53:00 ]
- pythonでおk
- 174 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 22:31:34 ]
- AnsiString GetReg(AnsiString Key, AnsiString Name, HKEY RootKey)
{ AnsiString Value; TRegistry *Reg = new TRegistry(); Reg->RootKey = RootKey; if(Reg->OpenKey(Key,false)){ if(Reg->ValueExists(Name)) Value = Reg->ReadString(Name); Reg->CloseKey(); } Reg->Free(); return Value; }
- 175 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 00:53:06 ]
- テラBCB
- 176 名前:174 mailto:sage [2007/08/02(木) 00:57:40 ]
- 書き込みが途中までしか出来てませんでした。
↓続き 関連する項目をググって、上記ソースを見つけたのは良いのですが、 得た値"Value"をstrcpy(a,b)のbで使おうとすると、 AnsiString型からキャストできず、エラーとなります。 AnsiString型をキャストすること自体がよろしくないようなのですが、 キャストか、他に良い方法がありましたら教えてください。 長文すみません。よろしくお願いします
- 177 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 01:01:43 ]
- strcpy(dst, AnsiString("あひゃ").c_str());
- 178 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 01:13:55 ]
- >>177は
Value.c_str()でやれということ
- 179 名前:174 mailto:sage [2007/08/02(木) 07:30:49 ]
- >>177=>>178さん
どうもありがとうございます。 助かります。
- 180 名前:デフォルトの名無しさん [2007/08/02(木) 22:26:11 ]
- プログラム中から現在のCPUのクロック数を測定したいのですが
どうすればいいでしょうか?
- 181 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 22:29:12 ]
- >>180
Win32APIのQueryPerformanceFrequencyは?
- 182 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 22:32:00 ]
- あれはかなりいい
しかしモバイル用CPUとか動的にクロックが変化するCPUだとちょっと困る
- 183 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 22:42:28 ]
- すいません>>182の理由により別の方法をおねがします
もしかして不可能?
- 184 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 22:45:00 ]
- 条件があったのなら初めに言えよ
- 185 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 22:46:46 ]
- cpuid命令を呼ぶ
レジスタに信用なら無いモデルナンバーが返って来る メーカーの資料と照らし合わせる 周波数を知る
- 186 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 22:51:17 ]
- CPUとは違う固定周波もってるハードに割り込みかけてもらうぐらいしか思いつかん……
- 187 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 22:56:08 ]
- >現在のCPUのクロック数を測定
だから>>181でFA
- 188 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 23:08:53 ]
- >>185
ああ、その方法もありますね。しんどいけど。 どこかに cpuid --> cpu clock 変換表みたいなのありませんか? クロック自体はrdtscで読めるんですが、 最近のCPUは省電力モードとかで クロック自体が落ちてることもあって 正確なクロックが取得できないんです
- 189 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 23:15:32 ]
- CPU毎の定格周波数が知りたかったのか?
- 190 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 23:24:10 ]
- CPU に意図的に負荷かけてから測定するとか。
- 191 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 23:40:09 ]
- asmでおk
- 192 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 16:33:06 ]
- 可変長のメンバ配列変数は C99 で規格合致になったけど、
C++ だと 9.2p8 を見る限り対応されてなさそうな雰囲気を感じる。 これは、非静的メンバ配列変数のサイズは必ず指定する必要があるという記述だから ここだけじゃ実際のところはっきりとは分からんけど。 でも、次期 C++ ドラフトを見るとこの記述が削られてる。 これは C99 と同様に可変長のメンバ配列変数に対応された現れだと見ているけど、 そのことが書いてある箇所が見つからない。 C++ での可変長のメンバ配列変数への対応具合の状況はどんな感じなんじゃろか。
- 193 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 20:55:47 ]
- 可変長配列がないならvector使えばいいじゃない(マリー
- 194 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 21:23:30 ]
- それなら C でも malloc 使えるしー。
でも、本気でそれでも問題ないと思うんだよな。 正直可変長メンバってどのくらい意味があるのか分かんないな。 Windows API とか可変長メンバを要求するところがあるから しゃーなしで使わんといかんこともあるんだが。
- 195 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 21:33:07 ]
- ポインタ使うかわりに可変長メンバ使うとメモリ上のレイアウトがフラットに
なるから、そのままファイルに読み書きしたりできて便利な場合もあるでそ
- 196 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 22:04:00 ]
- stlのアロケータってrealloc操作がないのな。
vectorやstringのサイズ増加時にコピーが走りまくって参った。
- 197 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 22:16:19 ]
- reserveとかあるだろ
そういうハナシじゃない?
- 198 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 22:19:34 ]
- ふつうdeque
- 199 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 22:25:23 ]
- >>195
書き込みは一発だけど、 読み込む時は一旦サイズを読み出さないといかんのだよな。 状況によってサイズが分かる場合もあるけどさ。 そこまでの利点には思えんのよなあ。 昔だとその僅かな差も重要だったんだろうか。
- 200 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 22:27:52 ]
- >>196
<cstdlib>のreallocも、その場で拡張できなければ、 新しい領域を確保して、そこへ元の記憶域の内容をコピーすることになっている。 クラスインスタンス相手にコピーコンストラクタを使わず複写なんて やるわけには行かないから、アロケータにrealloc相当の操作がないのも妥当な判断。 仮にやるとしたら、その場で拡張できるときだけ成功するrealloc操作 なんてことになるんだろうな。
- 201 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 22:33:47 ]
- >>199
malloc()/free()一発で確保・解放できるのも「Cでは」便利 で、特にデメリットも無いわけで まあ可変長に出来るのは最後のメンバだけ、という制限があるけどな ま、基本的に言語サポートが貧弱なCで特に生きるテクニックという気がする
- 202 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 22:35:49 ]
- 記憶域の内容がコピーされても、
その後にちゃんとコピーコンストラクタを placement new で呼べば一応正常に動作する。 問題は二度手間になることと、 realloc による管理は C++ っぽくないってところだな。
- 203 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 22:36:31 ]
- PODのときはrealloc or memcpyするぐらいの配慮が欲しかったなあ
パフォーマンスに関わるんで結局手書きしちゃったよ 無駄にT()でfillするし・・・
- 204 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 22:37:30 ]
- >>201
どっちゃにしろ動的に確保する場合は 確かに一発で済むから便利か。なるほど。
- 205 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 22:40:24 ]
- でもまあバッファを拡大するときも、必要な量ぎりぎりではなく、
例えば倍々に増やしていったりする実装の存在なんかを考えれば、 やっぱりコンテナがrealloc相当のことをやっているんだよなと思う。
- 206 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 22:42:15 ]
- なんでC++にnew/deleteがあってrealloc()相当物が無いのかってのは
Stroustrupが説明してた気がするが、忘れた
- 207 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 22:45:50 ]
- placement new でコピーコンストラクタ使ってオブジェクト作ってるよ。
- 208 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 22:49:31 ]
- Win32 APIのVirtual Allocみたいなの使ってアドレス空間だけ予約しとけ
- 209 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 02:02:59 ]
- シグナルって何に使えばいいの?
中で特別な関数以外の関数呼んだら未定義とか規格に書いてるんだけど。
- 210 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 02:04:27 ]
- ぶっちゃけsignalがCの標準に含まれているのはどうかと思う
- 211 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 02:04:59 ]
- マジ?あの欠陥品が?
- 212 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 02:05:32 ]
- >>209 Unixの規格を読むんだ
- 213 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 02:09:07 ]
- Posix的にはsignal()は推奨されないでしょ
sigaction()を使うべき Windowsのコンパイラが提供するsignal()は、規格を満たすためだけの紛い物で 何の役にも立たない つまりsignal()なんて要らない子
- 214 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 02:10:34 ]
- いやシグナルという仕組み自体が正直勘弁だ
- 215 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 02:11:28 ]
- まあスレッド登場前の化石だよな
- 216 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 02:14:57 ]
- signal handlerからlongjmpがunixの作法ですが何か?
- 217 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 02:15:53 ]
- おk。大体分かった。
- 218 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 02:17:24 ]
- それが今となっては最悪の作法だよねって話でしょ
スレッドと相性が非常に悪いし それでなくとも シグナルハンドラが再インストールされるかどうかとか システムコールが再送されるかどうかとか シグナルハンドラ内であれをやってよいこれはよくないとか バッドノウハウのすくつやん
- 219 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 02:23:03 ]
- write一つとっても、linux/*bsd/solaris/hp(dec)でそれぞれ挙動が違うからねえ
posixもM$がサーバ戦略に本腰いれて慌てて始めたもんだしなあ
- 220 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 03:22:10 ]
- set_terminate ってどういう場合に使う?
main で全ての例外補足してから異常終了した方が ローカル変数のデストラクタが呼ばれていいと思うんだけど。
- 221 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 03:24:59 ]
- そういうまともな例外処理が出来ないときのためにあるのでは
例外処理中に例外が出たとか
- 222 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 03:27:03 ]
- >>220
2行目以降の意味がわからん。 set_terminate() 関係ないだろ。
- 223 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 03:36:23 ]
- >>221
ああ、二重例外に対応する場合か。なるほど。
- 224 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 12:41:24 ]
- VS2005 MFCなんだけど、アクセスバイオレーションの例外処理を
捕らえたいんだけど、 try{} catch( ... ){} この構文では捕えられないんだけど、どうしたらいい?
- 225 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 12:44:09 ]
- アクセスバイオレーションて単純にソフトウェアのバグじゃないか?w
- 226 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 12:54:51 ]
- /EHaとか/EHcがらみじゃないの?
でもデフォルトから変更した場合、 ミドルウェアとか依存するライブラリ絡みの整合性が心配だな。
- 227 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 15:14:37 ]
- ttp://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdndeepc/htm/deep060399.asp
まあC++の範疇じゃないな。
- 228 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 06:55:48 ]
- 構造化例外で捕まえた方が良いと思うヨ。
- 229 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 18:19:11 ]
- _set_se_translatorという手もある。
いずれにせよVC++くらいしか使えるものがないというのに変わりはないけどな。
- 230 名前:デフォルトの名無しさん [2007/08/06(月) 21:25:46 ]
-
スレ違いだったらすいません。 アプリ開発の依頼スレが見つからなかったのでこちらに書かせて頂きました。 当方所有のウェブアプリケーションソフト (以前プログラマに依頼して作ってもらったものですが今は連絡が取れません) がURL先の変更?で突然使えなくなってしまいました。 そこで、緊急で本日中に改変が出来そうな方是非お願いできないでしょうか? 当方、全くの知識不足で言語が C++ということ以外分かりません。 ソースファイルは持っております。料金は2万円でお願いします! seishinkeiki@hotmail.co.jp
- 231 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 21:29:58 ]
- マルチはよくないな
- 232 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 21:47:57 ]
- やすっ
- 233 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 23:11:47 ]
- >>230
ソースがあるならソースを晒せよ。ロハでできるぞ。 ソースを晒せないから有料でということなら、2万円なんて人を見下したようなことをするもんじゃない。
- 234 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 06:33:04 ]
- void foo(char *p, size_t len)
{ }
- 235 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 06:34:28 ]
- すみません途中で送信してしまいました。
void foo(char *p, size_t len) { // ここでpとlenからistreamを作りたい } 実際には、basic_istreamの派生クラスを作るしかないのでしょうか?
- 236 名前:235 mailto:sage [2007/08/07(火) 06:44:00 ]
- 最初は、std::istringstreamを使って実装していたのですが、バイナリを扱う必要があるので、見送りました。
- 237 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 07:39:56 ]
- 俺判定
↓エスパー1級
- 238 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 07:48:18 ]
- >>236
ファイルストリーム以外でバイナリとテキストの問題なんて起こらないだろ? istringstream でいいと思うよ。
- 239 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 07:50:42 ]
- >>236
なんでバイナリを扱う必要があったら istringstream を見送るの?
- 240 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 09:01:36 ]
- stringという名前が付いてるからバイナリは扱えないと思っているんだろうな
- 241 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 20:13:23 ]
- 義務教育もしっかり受けてるのに
x = x +1 が疑問でもなんでもない俺は負け組
- 242 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 20:15:25 ]
- 柔軟な思考は大事
固定観念はよくない
- 243 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 21:16:13 ]
- もう疑問を持ったかどうかすら覚えてないわ
- 244 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 21:57:28 ]
- >>241
x = x * x + Cならマンデルブロ集合なんだけどね。
- 245 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 10:46:54 ]
- >>241
むしろそのへんの切り替えが高速にできない子は算数のできない子
- 246 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 19:51:16 ]
- リアル演算子オーバーロードだよな。
- 247 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 19:59:43 ]
- 要は「今まで習った常識・ルール」に囚われてしまっていて、
新しいルール、新しい前提の上でのゲームには一歩も踏み出せないってことだからな その程度の頭の柔軟性が無いのでは算数やプログラミングに限らず 何やってもだめ
- 248 名前:デフォルトの名無しさん mailto:sage [2007/08/10(金) 09:40:31 ]
- 何でも受け入れるのもあれだけどな。
そこに疑問を持ち、考察し、納得する、というプロセスをだな・・・
- 249 名前:身の程知らず mailto:sage [2007/08/10(金) 12:01:33 ]
- C++の文法に疑問を持つのは、よほどの天才か身の程知らずのどちらかだろ。
もちろんもっと人間にもコンパイラにも分かりやすくて、すばらしい文法は作れただろうが、 今のような位置を占めているかどうかは疑問だ。 以下、俺様演算子を定義できる機能とか、 Cのプリプロセッサなんかより、もっとプログラマブルで、文法を考慮するマクロとか、 ↓禿のお気に入りだったマルチメソッドなどについて語ろう↓
- 250 名前:デフォルトの名無しさん mailto:sage [2007/08/10(金) 12:04:48 ]
- >以下、俺様演算子を定義できる機能とか、
演算子オーバロードではお気に召しませんか? >Cのプリプロセッサなんかより、もっとプログラマブルで、文法を考慮するマクロとか、 C99のプリプロセッサではお気に召しませんか? それならDをどうぞ。
- 251 名前:デフォルトの名無しさん mailto:sage [2007/08/10(金) 12:06:05 ]
- Lispじゃねぇの
- 252 名前:デフォルトの名無しさん [2007/08/10(金) 12:10:18 ]
- 開発当時はのんびり言語仕様考えるヒマなかったんだろう。
シェア争いを制するために時間を惜しんだんだろ 結局当時は高級言語に負けたが。
|

|