C/C++のこの機能逝ってよし
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG個人的には広域ジャンプ使ったこと無し。
0002デフォルトの名無しさん
NGNG0003胴衣
NGNG0004au
NGNG0005デフォルトの名無しさん
NGNG特にスーパークラス同士で同じ変数名やメンバ関数名使われると
わけわからなくなってくる。
0006デフォルトの名無しさん
NGNGneverendingloop{
}
ていうループを作って欲しいね
0007反抗期
NGNGwhile (1), for (;;) なんかは
イディオムとして大昔から定着してるから問題無し!
0008oop
NGNG0009デフォルトの名無しさん
NGNG0010デフォルトの名無しさん
NGNG0011デフォルトの名無しさん
NGNG0012デフォルトの名無しさん
NGNG多重継承の有効的な利用法をまだ知らない厨房発見。
カワイイ(・∀・)!
0014デフォルトの名無しさん
NGNG0015デフォルトの名無しさん
NGNG継承バカ発見。
継承よりも委譲を使おう。
0016デフォルトの名無しさん
NGNG同名のメソッドやfinal定数が重なって酷い目に合いました。
どうしてこんなクソ言語になったのでしょうか。
開発者も使ってる連中も脳みそ腐ってるんでしょうか。
0017デフォルトの名無しさん
NGNG継承で書いた方が素直に書けるものは、継承で書いてくれ。
0018デフォルトの名無しさん
NGNG>おれの勝ちは明白ですよ。
それらの言語では、貴方のようなドキュソのために
お手軽度を増してあるのです。
やみくもな継承は問題ですが、
mixin 的な使い方はやっぱし捨てがたいです。
>>16 考えなしに継承しちゃあ、だめだめ。
0019あんちOOP
NGNGネットワークライブラリが、ウインドウハンドル
を持ってたり、LANのサーバークラスが勝手に外のDNSを参照
してたりするのは嫌。
継承っていもずる式に依存関係が複雑化していくと、
MFCを見てそう思う。
Mix-Inやテンプレートは重要。
0020デフォルトの名無しさん
NGNGとにかくこれでもかといろいろコードを複雑にして他人を困らせてはほくそえんでいます。
あなたたちは書いて終わりでもデバッグする人のことを考えて下さい。
テク自慢は一人で趣味でやってなさい!
0021
NGNG0022デフォルトの名無しさん
NGNG人に未来はありませんな。
Ruby 罵倒嵐と同レベル。
0023デフォルトの名無しさん
NGNGそれが「委譲」というやつです。
0024デフォルトの名無しさん
NGNG(多重)継承も全てが悪なわけじゃない。
ホントはそんなことみんなわかってんだべ?
0025デフォルトの名無しさん
NGNG0026デフォルトの名無しさん
NGNGああ、わかっているさ。でも、そういったことを分かった上で、
保守性になるべく悪影響がでないようなコードを気遣って書いて
くれるマトモなプログラマがあまりにも少なすぎるので、最後には
goto禁止!多重継承禁止!になっちまう。
元を正せば馬鹿プログラマの自業自得。
0027デフォルトの名無しさん
NGNG0028
NGNGありがとうございます。勉強になりました。m(_ _)mマジ
0029デフォルトの名無しさん
NGNG0030デフォルトの名無しさん
NGNGそういう部分部分への対処療法では
根本的な解決が得られないばかりか
泥々沼々でしょう?
0031デフォルトの名無しさん
NGNG戻り方向に使ってるバカは N88BASIC を使って下さい。
あなたはどうですか? >>29
0032
NGNGオブジェクトとサブルーチンを分けてある。
ごっちゃにしてるほかのOOPより遥かに優秀!
0033デフォルトの名無しさん
NGNGgotoを状態遷移に使ってますがパーですか?
0034デフォルトの名無しさん
NGNGネストした場合に vector<vecitr<int>> と書くと >> が演算子とみなされてエ
ラーになる仕様ね。
あとはヘッダと実装を二重に書くのも、面倒だよ。テンプレートを多用しだす
と、前方宣言を大量に入れる必要があって鬱。
003529じゃねえですけど
NGNG状態遷移をハードコードするときには goto が欠かせません。
まさか while + switch で無理矢理代用するなんてしないよね。
同意。
ループ抜けるのにはよく使う。
規模にもよると思うが、
飛ぶ先がすぐ分からないのは却下。だとおもふ。
0038デフォルトの名無しさん
NGNGgotoがいけないなんて事は無いけど。
0039デフォルトの名無しさん
NGNG004029
NGNG「わかりにくくなるから」
以外に述べてください。
0041デフォルトの名無しさん
NGNG構造化やOOを切り裂くから。
0042デフォルトの名無しさん
NGNGbreakやcontinueやreturnも使ってはいけないのですか?
0043デフォルトの名無しさん
NGNG異様にネストが深いことが多い。
0045デフォルトの名無しさん
NGNG簡単なので悪いけど /^[+-]?\d+$/ みたいなのを判定する関数
インデントは勘弁。
int
parse_int(const char* s, int* result)
{
int sign = 1;
int num = 0;
SIGN:
if (*s == '+') { s++; goto BODY; }
if (*s == '-') { s++; sign = -1; goto BODY; }
if (isdigit(*s)) { goto BODY; }
goto ERROR;
BODY:
if (isdigit(*s)) {
num = num * 10 + (*s - '0');
s++;
goto BODY;
}
if (*s == '\0') {
if (result)
*result = num * sign;
return 1;
}
ERROR:
return 0;
}
0046デフォルトの名無しさん
NGNG使ってもいいが駆使してはいけない。
0047デフォルトの名無しさん
NGNGgotoは悪くない。
gotoを下手に使うパーが悪い。
0048デフォルトの名無しさん
NGNGネタ?
0049デフォルトの名無しさん
NGNGわけのわからないコードを「構造化で書いてる」と言い訳する
見苦しい場面に、最近よくあいますが…
0050デフォルトの名無しさん
NGNG>BODY:
>if (isdigit(*s)) {
>num = num * 10 + (*s - '0');
>s++;
>goto BODY;
>}
何で for or while 使わないでわざわざ goto 使ってるの?
0051
NGNG死ぬ。目が腐る。
0052
NGNGコボラーかBasic臭のするコード・・。
0053デフォルトの名無しさん
NGNG005445
NGNG37 のリクエストに答えたまで。
特定の正規表現をハードコードしたイメージ。
なので元の正規表現がわかってれば読めます(たぶん)。
整数だと単純だからアレだけど、
例えば整数と浮動小数点数と文字列と全部判断するとなると
いわゆるキレイ+効率的には書けないでしょ。
実際にはマクロとかつかってもすこし見やすくなります。
ただし、C には見えなくなるかもしれんけど。
0056
NGNGってなんなんだーゴルア
0057デフォルトの名無しさん
NGNGlex/yacc の吐くコードがこんな感じだよね。
自分で lexer 書くときは ERROR に飛ぶのだけ goto 使ってる。
0058デフォルトの名無しさん
NGNGつーか、もういじめないで(w
0059デフォルトの名無しさん
NGNGlex だと汎用的すぎてでかくなるのがイヤな時は、
自分でこんな風にスキャナを書いて yacc と連係します。
初見のイメージほど読みにくくないよ。
だからいじめないで(w
0060デフォルトの名無しさん
NGNGむしろ、サンプルが「単純すぎた」のが敗因だと思うが。これだと goto は ERROR:
以外要らないし。
苛められすぎなんで、ちょっと弁護しておく。
状態遷移は色々書き方あるけど、最も高速に動作するのが手書きで goto 駆使し
たコード。状態を変数に入れて switch - case したり、関数ポインタを使って管理
するよりも速くなる。
処理系を書く場合、字句解析は性能を左右する部分なので、コードが汚くなろうが
気合入れて最適化する必要がある。そこで goto 使うのはアリだし、敢えて while
などを使わず、状態に対応するラベルを残しておいて、設計変更時に備えるのも
常套手段。
ま、俺は lex 使うけど(← ……
0061デフォルトの名無しさん
NGNGlongjmp/setjmpは無いと困る
0062デフォルトの名無しさん
NGNG0063デフォルトの名無しさん
NGNG構造化原理主義者は根性無しばかりというわけだ。
アヒャヒャヒャヒャ次はなにしてあそぼかな。
0064デフォルトの名無しさん
NGNG006545
NGNG0066デフォルトの名無しさん
NGNG制御系だと必須だが。周辺機器への入出力を特定のアドレスにマッピングしてる
ような場合、
int *p = (int *)0x00f0;
// read from I/O port
n = *p;
// again
n = *p;
これだと一度 0x00f0 番地から読み出したデータをレジスタに格納しておいて、
使いまわされる恐れがある。
あとは setjmp(), longjmp() が絡む場合も volatile にしておかないとローカル変数
がレジスタに割り当てられて泣けるぞ。
0067
NGNGまあ、GOTOはともかく状態遷移は理解できます。
同じ層で状態遷移しなきゃならないのに、サブルーチン作っちゃって
他の処理へ飛ぼうとして立ち往生する奴いたもので。
0068デフォルトの名無しさん
NGNGなんていうか、private な部分の宣言がヘッダに見えちゃうのが嫌いだな。
外部に無関係なはずのに、さわったら全部コンパイルしなおしってのが。
効率/実装上いたしかたないという気持わわかるんだけれども。
0069デフォルトの名無しさん
NGNGそんなあなたに Bridge パターン。Win32 なら COM もアリ。
言語レベルで対処してくれれば嬉しかったのに、というのは同意だが。
0070デフォルトの名無しさん
NGNG0071デフォルトの名無しさん
NGNGそういう話じゃないってば(藁
0072デフォルトの名無しさん
NGNG単に、実装クラスに委譲するラッパー書けばいいだけだよね?
0073ラッパーって??
NGNG007568
NGNG0076デフォルトの名無しさん
NGNG無いので、HogeImplの実装を隠蔽できます。
>>>>ランタイムにして隠すクラスのヘッダ
class HogeImpl{
private int hoge;
public int getHoge(){return hoge;}
public void setHoge(int val){hoge = val;}
}
>>>>>
>>>>>公開するヘッダ
class HogeWrapper{
private HogeImpl impl;
public int getHoge();
public void setHoge(int val);
}
>>>>
0077デフォルトの名無しさん
NGNGなんで組み込みの人って
IOポートアクセスみたいな特殊な処理を
さらりと代入文で書いちゃうの?
C++なら
inline int inport(int port) { return *((volatile int *)port); }
int main() {
int port = 0x00f0;
// read from I/O port
n = inport(port);
// again
n = inport(port);
}
とした方がOS変える時とか変更箇所が少なくて良いと思うんだけど
あ、volatileが必要ってのはそりゃそうなんだけど。
0078デフォルトの名無しさん
NGNG0079デフォルトの名無しさん
NGNG0080デフォルトの名無しさん
NGNGとっちか片方にしてくれ
0081デフォルトの名無しさん
NGNG>66 のはメモリマップドI/Oだから。
あなたのはI/OマップドI/Oだから inport, outport などの関数を
使うのです。
008266
NGNG微妙に勘違いしてるぞ。>>77 は inport() も自前で定義してる。
>>77
あのコードは単に volatile 使う一例として書いたから。実際には 0x00f0 なんて
マジックナンバーはコードに埋め込まないし、抽象化もします。
0083デフォルトの名無しさん
NGNGいや、メモリマップドI/Oだからって普通のメモリ(?)
と同じ風にアクセスするのはやめようよって言ってるんだけど。
>>77はメモリマップドI/O用に書いたんだよ。
関数inport()という名前が悪かった(I/Oマップド用に見える)
というならメンゴ
けど、>>77みたいに書いてれば、
たとえば、メモリマップドのMIPS用に書かれた関数を
I/Oマップドのx86用に書き直すときに簡単になるとか、
I/Oアクセスタイミングが分かり易くなるとかメリット多いでしょ?
0084デフォルトの名無しさん
NGNG0085デフォルトの名無しさん
NGNG0086デフォルトの名無しさん
NGNG時は金なり。
0087デフォルトの名無しさん
NGNGけっこう同意(w
0088デフォルトの名無しさん
NGNGそれ、ERROR:以下にエラー処理ないやんか…
0089デフォルトの名無しさん
NGNGコンパイル遅いって、何と比較してるの?
昔は切実だったが、最近だと大きめのプロジェクトでもプリコンパイルヘッダ/インクリ
メンタルリンクを使えば数分で終わるから、もはや気にしなくなったが。
0090デフォルトの名無しさん
NGNGDelphi
0091デフォルトの名無しさん
NGNGDel 使いが C/C++ スレッドに来ると、スレチガイの書き込みを繰り返して荒れる
のが常。早めにお帰り願いたい。
0092デフォルトの名無しさん
NGNGVC使ってIDEのエディタで変数名や関数名とかの定義位置を
探すときにいちいちコンパイルするでしょ。あれが長ったらしくていやなんだよね。
0093デフォルトの名無しさん
NGNGエラー処理じゃなくて ERROR という状態なんだってば。
自分のアフォさをさらけだすだけだからもうよせって。
0094デフォルトの名無しさん
NGNGしてみたけど、噂ほどは早くないって印象だけど。
0095デフォルトの名無しさん
NGNGそんなことはないだろう。
たいてい数秒以下で終わるぞ。DelPro だけど。
マシンの Mem が 32MB とかないよなー。
0096デフォルトの名無しさん
NGNG0097デフォルトの名無しさん
NGNG0098デフォルトの名無しさん
NGNGasm って言語仕様にないだろう。特定の処理系の話になるんじゃないか。
まーそうは言ってもたいてい asm 使えるけど。
0099デフォルトの名無しさん
NGNGx86の経験しかない厨房的質問でスマソ
使った事があるMMIOを提供しているボードは皆書き込んだ後にoutpを
要求しているんだけどこれって少数派?
#outport()で*ptrとoutp()を両立できないよね?って云ってますです
それとドライバを書く時に他CPUへの移植性なんて意識しちゃいないん
だけど、皆普通に考えてるもんなの?
微妙にスレ違いな気がするのでsage
0100デフォルトの名無しさん
NGNG0101デフォルトの名無しさん
NGNG単なるキャストとちがうのですか?
0102デフォルトの名無しさん
NGNGhttp://piza2.2ch.net/test/read.cgi/tech/996640937/190-195
0103デフォルトの名無しさん
NGNG0104デフォルトの名無しさん
NGNG0105101
NGNGありがとうございます
明示的にキャスト変換を呼ばない(でいいのかな)んですね。
疑問が解けました。なかなかの曲者ですね。
0106デフォルトの名無しさん
NGNG確かにDelのコンパイルは激速。
もちろん差分コンパイルは一瞬なのは言わずもがなだが、
手元の6万行くらいのコードを再構築(PenIII700MHz)してみたところかかった時間は5秒・・・。
思わず笑ってしまった。
昔はマシンスペックがあがればgccもVCのコンパイラもストレスなく使えると
思っていたがそうでなかったので少々がっかり。
0108デフォルトの名無しさん
NGNGpascalはLL(1)文法で定義されているから速いのは当然
ただ、Delphiの文法もLL(1)文法かは知らない。
C言語はLR(1)(LALR)文法だから遅い。
0109デフォルトの名無しさん
NGNGあと#defineを置換して回るのも遅そうだ
0110デフォルトの名無しさん
NGNGなんであれがコンパイル通るんだろ。不思議でたまらん。
va_listマクロなんかは特別扱いされてんのかな?
0111デフォルトの名無しさん
NGNG使ったことあるよ。
stdarg.hだっけ?
CVSの読み込みに%d,%s,%fみたいに読めるようにした。
0112デフォルトの名無しさん
NGNGバカこけ。自分でテキスト置換プログラム書いてみろよ。
どんななアホが書いたって一瞬で終わるよ。
0113デフォルトの名無しさん
NGNG速度的に出来ない場合も多いし
関数内部じゃ結局 volatile 必用になる場合多いよね
といっても最後はインラインアセンブラになっててvolatile 使わない事になるけど
0114デフォルトの名無しさん
NGNG> どんななアホが書いたって一瞬で終わるよ。
お前もcppを書いてみてからそーゆー大口を叩け。
0115デフォルトの名無しさん
NGNG正直、ありったけのインクルードファイルを読み込んでも、
そんなに重くならない気がする。
(内部で何してるかは知らないので、何ともいえないが。)
0116デフォルトの名無しさん
NGNGCも再帰下降でかけなかったっけ?
つまりLL(1)
0117デフォルトの名無しさん
NGNGそれと、Pascalのパースが速い理由は1パスだからで、
文法は関係無い。
0118デフォルトの名無しさん
NGNG一カ所だけかけない部分があります。考えてみそ。
0119デフォルトの名無しさん
NGNG0120デフォルトの名無しさん
NGNGケッ、エラソーニ
0121109
NGNGうーむ、結構速く済むな。
でもDelphiなら同じ時間でコンパイルまで終わっちまいそうだが。
>> 119
Pascalのifもelseの前にセミコロンがあるかないかでCと同じ。勿論ネスト可能。
ということで違う気がする。
キャストかな。再帰下降なら(int*)Aとかで"("がキャストの括弧なのか
優先の括弧なのか区別がつかなさそう。
0122デフォルトの名無しさん
NGNG純粋に LL(1) じゃないけど、だいたい再帰下降でパースできます。Dennis
謹製の初期 C コンパイラに関するドキュメントとソースコード。
http://cm.bell-labs.com/cm/cs/who/dmr/primevalC.html
そもそも最初の C コンパイラが世に出たときって、まだ LALR 用のコン
パイラジェネレータ存在してなかったから LALR ってことは、ありえない
でしょ。手作業で LALR 状態遷移表を計算するのは無謀だから、コンパ
イラジェネレータ無しだとやってられんし。
>>118
ほんとに一箇所?
0123デフォルトの名無しさん
NGNG0124デフォルトの名無しさん
NGNGで、答えは?
0125デフォルトの名無しさん
NGNGありったけのインクルードファイルをインクルードしてみた。
86万行。
0126デフォルトの名無しさん
NGNGこれを使うと、ほとんど書き換わらないヘッダファイルが何万行あっても
遅くならないです
windows.hがデカイ遅いとお悩みの方は利用を検討してみては。
あと、gccに導入されないのが不思議。
スレ違いっぽいのでsage
0127デフォルトの名無しさん
NGNG0128デフォルトの名無しさん
NGNGドット( . )にしとけや!!!
C#では廃止されたけどな。
0129デフォルトの名無しさん
NGNGハァ?
0130デフォルトの名無しさん
NGNG激しく同意!
0131デフォルトの名無しさん
NGNG0132デフォルトの名無しさん
NGNG0133デフォルトの名無しさん
NGNG0134デフォルトの名無しさん
NGNG0135デフォルトの名無しさん
NGNG禿同
>>133 は実体・参照・ポインタの区別の付かないJava厨房と思われ。
0136デフォルトの名無しさん
NGNG理解できないのは言語仕様のせいですか。
0137デフォルトの名無しさん
NGNGCとの互換性以外は。
C++が言語仕様を複雑にしてるのは他人に自慢するため?
実体・参照・ポインタを区別して良いことある?
ほんとにその仕様はリーズナブル?
0138デフォルトの名無しさん
NGNGGCがない分、stackに置いたobjectがスコープはずれて
自動でデストラクトされるのは非常に重要なんすが。
0139sage
NGNG->と.は別に一緒でもいいと思うが、
参照とポインタが明確に区別されているからこそ、
低水準なプログラムもスマートに書けるようになるんだよ。
C++は高級言語ではないってこと、忘れてないか?
0140デフォルトの名無しさん
NGNGC++ に限って言えば operator->() 使えないと、スマートポインタを実装するのに
困らない?
0141デフォルトの名無しさん
NGNG> 確かに -> の機能を . に置き換えても文法的に問題なさそう。
文法勉強してから出直してこい
0142デフォルトの名無しさん
NGNGマジで言ってんのかよ・・・
コンパイラコンパイラの本でも読んで、本当に問題が無いか考え直してくれ。
0143デフォルトの名無しさん
NGNGつ−か137はJavaと同様にせよっていってるんじゃないの?
Java厨だね。
0144デフォルトの名無しさん
NGNGそれはわかる、けど3種類いらないでしょ。
実体とポインタで十分でしょ?
>>139
わかんない。参照あるとswapがかけるとか?
>>140
operator.()オーバロードできるようにしちゃえ
0145デフォルトの名無しさん
NGNGpackageでのアクセス制限とか
コンストラクタでの仮想関数の挙動だとか
synchronizedの扱いが実は難しいとか
初心者泣かせで、かつ、実装ミスを誘発やデバグを困難にする原因になっていますね。
Java厨というのはそういうところまで使い込んでないんですよね。
0146デフォルトの名無しさん
NGNG現にボーランドの言語製品はそうしてる。
0148デフォルトの名無しさん
NGNG0149デフォルトの名無しさん
NGNG0150デフォルトの名無しさん
NGNG0151デフォルトの名無しさん
NGNG> packageでのアクセス制限とか
そうかな?暗黙なのがやなのか?
> コンストラクタでの仮想関数の挙動だとか
これはC++の方が決まってないことが多いだけで、
挙動がはっきりしてるJavaは分かり易いかと
> synchronizedの扱いが実は難しいとか
マルチスレッドはどの世界でも難しいんであって
言語レベルで取り込んでしまったからしょうがない。
けど、もうちょっと分かり易い実装でも好かったかも
っていうかなんでJavaを出したがる?
0152デフォルトの名無しさん
NGNGC++プログラマーの3%はOOPができるみたいだねー
科学者のJavaプログラムはすごくきれいで読みやすいねー
C++でOOPを勘違いしてると、ある意味突っ込めない(w
実行時ポリモーフィズム使いずらいって,C++
0153デフォルトの名無しさん
NGNG-> を . をまとめるって言ってる人は、
a.b
というコードが出てきたとき、a の型によって . の意味を変えようといってる
わけだよね(ちょうど [] に対するアセンブラ出力が、変数の型によって異な
るように)。
これは既存の文法と衝突せずに実装できそうな気がするんですが、パー
ズ不可能になるコードの実例を挙げられる人はいます?
>>144
operator.() をオーバーロードしたら、auto_ptr 自体のメソッドと auto_ptr に
格納されているオブジェクトのメソッドを区別できませんがな。
std::auto_ptr<foo> p;
p.reset(); // この reset() は auto_ptr<foo>::reset(), それとも foo::method() ?
0154デフォルトの名無しさん
NGNG結論は?URLプリーズ
0155デフォルトの名無しさん
NGNG意味不明な上に、スレ違い。
「C/C++のこの機能逝って良し」に関係ない話題は yoso でやってくれ。
0156デフォルトの名無しさん
NGNGグローバルな関数を作りたい時もあるんだよ。
0157デフォルトの名無しさん
NGNGソースを示せ。つーかPGって何だよ。ペログリしかおもいつかねえ。
>>138
そうだな。std::stringをnewしねえと駄目なんじゃ、Cとかわらん(藁
悪夢だ。
0158デフォルトの名無しさん
NGNG定数一つ宣言するのも、オブジェクトのメンバにしないといけないし。
0159デフォルトの名無しさん
NGNGハァ?つくれるじゃん。staticなメソッドに我慢がならない
のか?C厨は名前空間(一般名詞)の概念も理解できないのかね。
0160デフォルトの名無しさん
NGNGs/オブジェクト/クラス/ だね。
C++ でコード書くときにも、定数やグローバル関数は namespace 切るから、
手間は大差ないと思うが。
0161デフォルトの名無しさん
NGNGC++でできるオブジェクト指向って・・・
0162デフォルトの名無しさん
NGNG具体的に C++ の機能を批判するのではなく感想文を書きたいだけなら、
逝ってくれ。
0163デフォルトの名無しさん
NGNGC99のこの機能逝ってよし!を誰か提供してくれ。読みたい。
0164デフォルトの名無しさん
NGNG> std::auto_ptr<foo> p;
> p.reset(); // この reset() は auto_ptr<foo>::reset(), それとも foo::method() ?
.をオーバーロードした人はpublicなメソッドを持つのは諦める。
auto_ptr<foo>::reset(p)
あるいは他の単項演算子でアクセサクラスを返すようにして、
(*p).reset()
とか
0165デフォルトの名無しさん
NGNG0166デフォルトの名無しさん
NGNG0167デフォルトの名無しさん
NGNGとりあえず、リンク張っとくか。
プログラミング言語 C の新機能
http://www.geocities.co.jp/SiliconValley/1002/c99d/
個人的には bool ではなく _Bool ってのがショックだったが。
0168デフォルトの名無しさん
NGNG可能性は広がるとしても、複雑化するのは止めてほしい!
0169デフォルトの名無しさん
NGNG多重継承できないクラス逝ってよし
と思ったけど無かった。保守的な規格だったのね。
0170デフォルトの名無しさん
NGNG0171デフォルトの名無しさん
NGNGVC++でC言語でプログラム書くような人たちって存在するの?
俺はUNIX屋だからよくわからんのだが。
0172デフォルトの名無しさん
NGNGまあ、極稀に。
普通はC++だろうなぁ。
0173デフォルトの名無しさん
NGNG0174デフォルトの名無しさん
NGNGC99 も gcc あたりで実装してくれると嬉しい人は多いと思うが。
VC++ には、C99 はどうでも良いから、むしろ早く ANSI C++ に準拠して template
まわりのバグをつぶして欲しい。
0178デフォルトの名無しさん
NGNG0179デフォルトの名無しさん
NGNGC#マンセー
0180デフォルトの名無しさん
NGNGMSが提供する既存APIの呪縛からは逃れられないのかね〜?
0181デフォルトの名無しさん
NGNGすべてCLRのライブラリを介して行うのだ。
0182デフォルトの名無しさん
NGNG0183デフォルトの名無しさん
NGNGだったらjavaでいいじゃん。
0184デフォルトの名無しさん
NGNG開発者の頭もカタくなってしまうし、周りが見えなくなるし、javaは弊害が多いね。
0185デフォルトの名無しさん
NGNG0186デフォルトの名無しさん
NGNGVBが入っていないYO!
0187デフォルトの名無しさん
NGNGっていうか C# = VJ++ + Delphi + VC++
0188デフォルトの名無しさん
NGNG0189デフォルトの名無しさん
NGNG0190189
NGNG0191デフォルトの名無しさん
NGNG0192デフォルトの名無しさん
NGNG入ってない。
0193デフォルトの名無しさん
NGNGDel厨やVB厨やshigeがこの世から消えるからな。
0194
NGNGC#はどうなるよ?
逝っていいの?
(あえて二行目には突っ込まない(w
0195デフォルトの名無しさん
NGNGC#は存在していてもまだ実務で使われるレベルのものじゃない(製品が無い
それから、システムを記述できる万能言語でもないから、無くてもいい
C/C++があれば事足りる。
0196デフォルトの名無しさん
NGNG0197デフォルトの名無しさん
NGNG0198デフォルトの名無しさん
NGNG普通にBasicも生き残るダロ。
使<s>え</s>わないけど(;´Д`)
0199デフォルトの名無しさん
NGNG(*p).a みたいにするって事?
p[i].a ならよく使うよ。
0200デフォルトの名無しさん
NGNGifstream f1(argv[1], ios::in | ios::);
つかえねーじゃんか!!
0201デフォルトの名無しさん
NGNG多分、文法上は関数定義が置ける以外は何も変わらないと思う。
そういうプリプロセッサでもあったらいいんだけど。
0202デフォルトの名無しさん
NGNGあっそれがC#やjavaか・・・。
0203デフォルトの名無しさん
NGNGローカル関数みたいの?
そんで inline 展開されたりすると素敵。
>>202
C/C++ と C#/Java 系は字面的にちょっと似せてあるだけで
方向性が全然違うと思う。単純に比較するのもどうかと思う。
0204デフォルトの名無しさん
NGNGnested functionならgccの拡張にあるねぇ
foo (double a, double b) {
double square (double z) { return z * z; }
return square (a) + square (b);
}
無名関数/無名クラスは欲しいなぁ
STLと食い合わせてみたい
やっぱ、C/C++は臨床実験言語として
いろんな機能を取り込んでってほしいかな。
漏れは普段使わないから
0205デフォルトの名無しさん
NGNGローカル関数なら、関数の中でクラスを宣言してstaticなクラス関数を書けば、
それがローカル関数にならなくもない。in C++。こんなかんじ。
void test{
class FUNC{
public:
static void function(){ printf("test");};
};
FUNC::function();
}
コールバック書くときとかに時々使える。あんまりつかうとソースが汚くなる。
0206203
NGNG可能なのとサポートされてるのは違うじゃん。
0207デフォルトの名無しさん
NGNG方向性として
C++ は豊富な言語仕様/効率性重視
C#/Java はシンプルな言語使用に豊富なライブラリ/仮想マシンによる抽象化
と、ぜんぜん違うと思う。
0208デフォルトの名無しさん
NGNGchar v[] = {...};
qsort(v. sizeof(v), sizeof(v[0]), int __cdecl lambda(const void* e1, const void* e2) { return *(char*)e1 - *(char*)e2; });
0209デフォルトの名無しさん
NGNG使わなかったから消したと思う
0210デフォルトの名無しさん
NGNGおお、なるほど。俺はついインラインアセンブラで書いちゃう(w
0211デフォルトの名無しさん
NGNG開発効率 java > C/C++
0212デフォルトの名無しさん
NGNG物によるダロ>開発効率
0213デフォルトの名無しさん
NGNGHello World の開発効率はどっちが有利でしょう?
0214デフォルトの名無しさん
NGNG0215デフォルトの名無しさん
NGNG0216デフォルトの名無しさん
NGNGちょっと厨房カモ。
でもユーザー定義型を含む暗黙の型変換は、極力使うべきではないってのが、
最近の流れじゃないんですか?どうなんでしょう。
0217デフォルトの名無しさん
NGNGなんかFortranを思い出すな。
0218デフォルトの名無しさん
NGNGintegral <-> pointerも許すの?
subtype関係にないtype間の暗黙の型変換は有害だよ。
0219デフォルトの名無しさん
NGNGJavaよりC++Builderのほうが上。
0220デフォルトの名無しさん
NGNG> explicitじゃなくてimplicitキーワードを導入すれば良かったのにねぇ。
explicitは明示しろってことだろう。
0221デフォルトの名無しさん
NGNG暗黙の型変換を行うのがデフォルトではなくて、
implicitで明示しない限り型変換できないようにすべきということだろ?
0222デフォルトの名無しさん
NGNG> implicitで明示しない限り型変換できないようにすべきということだろ?
暗黙にするときは明示しろ!ってなんかすごいね
0223デフォルトの名無しさん
NGNG今までのコードがコンパイルできなくなるんだが?
0224216
NGNGあれ、integerとポインタ間って暗黙変換できましたっけ?
C++では少なくともワーニング出ると思うんだけど。
最近Javaばっかりだから記憶があいまいだ...
0225216
NGNG「integerとポインタも組み込み型だから、暗黙の変換は必要だ」と解釈した
わけね。
前言撤回。「C++で許される組み込み型間の暗黙の変換は必要」に改めます。
0226デフォルトの名無しさん
NGNGクラス定義の最初にimplicit none; と書くのさ。
Fortran77に習って。
あとimplicit virtual;で暗黙的に仮想関数になる機能とか。
文法ぐっちゃぐちゃ。
0227デフォルトの名無しさん
NGNGだから〜
何でやるんだYO?
メッセージボックス一個とかよ?
それとも単にprintfちっくにやるだけでいいのかよ?
それともウィンドウ作らないときがすまないのかよ?
わかんね〜YO
0228デフォルトの名無しさん
NGNG> あれ、integerとポインタ間って暗黙変換できましたっけ?
> C++では少なくともワーニング出ると思うんだけど。
Warningってのは、lint++の機能をcompilerが持ったというだけで、C++の仕様とは違うだろ。
integral <-暗黙型変換-> pointerは、0がnull pointerと同時に逝ってよし大賞。
>>225
subtype関係にあるclass同士はどうするんだー?明示なのか?
0229デフォルトの名無しさん
NGNGC++では0をNULLの変わりに使わないか?
void*からの変換でwarning出るし
0230216
NGNGintegerとpointerは暗黙変換できませんでした。最初から確認すればよかったね。
具体的にはVC++6.0では以下の文はそれぞれエラー(C2440)でした。
char *p = 0x10000;
int n = p;
0リテラルがnull pointerっつーのは、Cとの互換を考えると仕方ないとも思うけど、
言語仕様としては望ましくないと思うね。
subtype関係にあるclass同士ってのは、どういうこと?以下のクラスがある時に
class Foo {..};
class Goo: public Foo {...};
Foo f = Goo(..); のとき?これはトラブルの元になりやすいから、暗黙変換を禁止
していいんじゃないかなぁ。
Foo *p = new Goo(..); は 「Goo型へのポインタ」という組み込み型から「Foo型への
ポインタ」という組み込み型への変換だよね。で、C++では許されている暗黙変換なので、
これはOKだと思う。参照も同じだよね。
0231デフォルトの名無しさん
NGNGどうでもいいが、本気で整数型を integral だと思ってる?
0232228じゃないが
NGNG(「積分の」という意味と無理やり混乱したいとでも??)
0233デフォルトの名無しさん
NGNG> どうでもいいが、本気で整数型を integral だと思ってる?
すまん、疑問形で投げかけられても、意味が分からん。明確に話してくれ。
”Integral type”ってのは、翻訳本だと、
論理型、文字型、整数型は整数系データ型: integral typeと総称され、
のことだ。Cの頃からの用語。
>>230
ああ、参照は組み込み型だっけ…(今、自宅なので規格書がない)
0235デフォルトの名無しさん
NGNG0236デフォルトの名無しさん
NGNGintegerの読みはインティジャーです。
あなたはインテガーとか逝っていませんか?
0237デフォルトの名無しさん
NGNG超合金ロボみたいだ、インテガー
0238デフォルトの名無しさん
NGNG>ローカル関数なら、関数の中でクラスを宣言してstaticなクラス関数を書けば、
>それがローカル関数にならなくもない。in C++。こんなかんじ。
でも、その関数内クラスってテンプレートに使うとかーちゃんに怒られるんだ
よなぁ。言語仕様的にもダメなのかは知らんけど。STLマンセーな俺的にはちょ
っと不便。
下がってきたので保守age
0239デフォルトの名無しさん
NGNG俺もだ。VC++特有かな?
言語仕様かな?
むしろlambda classきぼーん。
gccには拡張構文であるんだっけ?
0240デフォルトの名無しさん
NGNGテンプレートの中身にはローカルな型は使えないぞゴルァ!って怒られるんだっけね。
0241名無しさん
NGNGおまえの
フレンドだ
0242デフォルトの名無しさん
NGNGお前の物は俺の物。
0243デフォルトの名無しさん
NGNG0244デフォルトの名無しさん
NGNG0245デフォルトの名無しさん
NGNG0246デフォルトの名無しさん
NGNG0247デフォルトの名無しさん
NGNG0248デフォルトの名無しさん
NGNGココ?>>247
0249デフォルトの名無しさん
NGNG||
Λ||Λ
( / ⌒ヽ
| | |
∪ / ノ
| ||
∪∪
0250デフォルトの名無しさん
NGNG馬鹿が気取ってマクロ書いたり、勝手な#if~#endif入れたり、
使いもしないヘッダを#includeするから、糞みたいに汚くなるし、
ちょっと改修でバグることバグること。
- no breakがデフォルトのcase分岐
普通はよく使うパタンをデフォルトにするだろ。
スルーするコードもありはするけど、大概、設計が甘いだけ。
0251デフォルトの名無しさん
NGNGせめて範囲指定が欲しい。
case 'A' to 'Z': みたいな感じ(この表記は問題あるが)
0252デフォルトの名無しさん
NGNG仮想関数オーバーライドするときに
名前間違えてもそのまま通ってあとで鬱。
0253遅レスですが
NGNG>>つまりLL(1)
118>一カ所だけかけない部分があります。考えてみそ。
ひょっとして、ラベル文(識別子 + ':')の所ですか?
識別子を先読みしただけでは、次にコロンが来てラベルの定義になるのか、
そうではなくて式の変数の参照になるのかわからないので、
さらにコロンがあるかどうか先読みする、という。
たしか、昔、elks(どうなったんでしょうか?)の開発環境に付いていた
ブルースエバンズ(著名な方のようですがスペルを忘れました)のCコンパイラ(再帰下降法)の
ソースを覗いてみたら、そういうふうになっていたような気が、、、。
違ってたらごめんなさい。
0254横槍
NGNGifがネストしていた場合elseがどのifに対応づけられるのか
LL(1)だと決定不能なんじゃなかったっけか?
で、特例ルールとしてelseは直近のifに対応づけられるってのが
付け加わっている と。
0255デフォルトの名無しさん
NGNGC じゃなくて Pascal 風だけど、直感的な構文規則の書き方
stmt -> IF expr THEN stmt | IF expr THEN stmt ELSE stmt | other
だと文法自体が曖昧になってしまう(とうぜん LL(1) でもない)。ただし、これを
曖昧でないように書き換えることは可能。で、それって、他の規則によっては
LL(1) で書けたんじゃないかなあ。
if - else に関しては、現実問題として構文規則を機械的に書き換えるより「最
近傍の if にくっつく」と文法を定義した方が構文規則を作るのもパーサーを作
るのも楽だから、そうしてるだけだったかと。
(間違ってたら指摘してくれ)
0256デフォルトの名無しさん
NGNG答えは?
0257デフォルトの名無しさん
NGNGJava だと「最近傍の else につく」という特例を使わず、構文規則の方で定義
してるね。おかげで StatementNoShortIf とか、よけいな非終端記号が増えて
て直感的に何言ってるのか分かりづらい。
0258デフォルトの名無しさん
NGNG0259デフォルトの名無しさん
NGNGtypenameとかexplicitとか見てると末期状態だよね。
C++で最も逝って良しなのは、その規格を完全に満たすコンパイラがこの世にまだ存在していない(らしい)ことかな。
0260デフォルトの名無しさん
NGNG俺は逆に static の使いまわしの方が鬱だ。キーワードは分けてくれた方が嬉しい。
0261デフォルトの名無しさん
NGNG0262Kusakabe Youichi
NGNG> 関数のstaticと変数のstaticは意味が全然違うしなぁ
どう違うのですか?
関数の外にある変数の場合で説明してください。
0263デフォルトの名無しさん
NGNGクラスメソッドの static に至っては、もう何がなんだか。
0264デフォルトの名無しさん
NGNGinfinity{
}
0265デフォルトの名無しさん
NGNGgcc の独自拡張だと
case 'a' ... 'z':
みたいな書き方ができるんだけどねぇ。
0266デフォルトの名無しさん
NGNG#define ever (;;)
for ever {
}
0267デフォルトの名無しさん
NGNGinfinity{
}
0268デフォルトの名無しさん
NGNGmugenruupu{
}
0269デフォルトの名無しさん
NGNG(1) ローカル変数に対して static を使うと
その関数を抜けても値が保持されたままの変数になる
(関数内からだけ参照できるグローバル変数みたいな感じ)
(2) グローバル変数および関数に static を使うと
そのファイル内からだけ参照できる変数になる
(3) クラスのメンバに対して static を使うと
いわゆるクラスメンバというやつになる
(インスタンス名.XXX じゃなくて、 クラス名::XXX で参照するやつ)
特にややこしいのが、
// aaa.h
class AAA
{
public:
static int a; // (3) の意味の static
};
// aaa.cpp
#include"aaa.h"
static int AAA::a = 0; // (2) の意味の static
//↑ こいつに static を付けると変なことになる
// クラスの public 変数なのに、aaa.cpp の内部でしか使えないから。
0270デフォルトの名無しさん
NGNGstatic が
- 変数/関数のスコープ(別の翻訳単位から参照できるか?)
- 変数の寿命(スコープを抜けると値が失われるのか?)
- インスタンスと関連付けられるか
と、全然違う意味を持ってるのがナニだよね。Java も static の多義性は
引き継いじゃったけど。
0271デフォルトの名無しさん
NGNG数年前に作ったプログラムのバグ(とは言えないか?)の秘密が今解けた(w
0272253
NGNGこれ以上は、スレ違いになるかもしれませんが、一応ほそくのつもりです。
bccのソースが手元にないので、記憶ですが、文の解析の部分はだいたい
次のようだったと思います。
>文の解析() {
> switch (現在のトークン) {
> case '{':
> 複合文の解析();
> break;
> (中略)
> case 識別子:
> 次のトークンを先読み();
> if (次のトークン == ':') {
> ラベル定義();
> goto RET;
> }
> 次のトークンを返却();
> /* No break */
> default:
> 式文の解析();
> }
> RET:
>}
トークンを1回読んだだけでは解析できないので、LL(1)にならないのは
この部分ではないかと、、、。
うーん、間違っているでしょうか?
0273デフォルトの名無しさん
NGNG0274デフォルトの名無しさん
NGNGJava の static って(2)の意味(変数の寿命)でも使えるんだっけ?
あと、確か static ブロックって構文があるんだよな。
C# なら、static は(3)の意味(クラス変数)でしか使えないんだけどねぇ。
スレ違いっぽくなってきたんで sage
0275デフォルトの名無しさん
NGNG0276デフォルトの名無しさん
NGNGいわゆる「左くくり出し」だな。
if文 := if ( expr ) stmt | if ( expr ) stmt else stmt
という構文規則を下記のように書き換えることによって
LL(1)で解析できる。
if文 := if ( expr ) stmt E
E := (空列) | else stmt
0277デフォルトの名無しさん
NGNGだれか解説せよ
0278デフォルトの名無しさん
NGNGたまに↓のような書き方になってるところがあって困るんだが。
aaa.h
#include "bbb.h"
bbb.h
#include "aaa.h"
まぁ、設計が甘いってのと、
#ifndef _AAA_H_
#define _AAA_H_
・
・
#endif
ってやればいいんだが。なんか美しくない気がする・・・
0279Kusakabe Youichi
NGNG> >>255
> いわゆる「左くくり出し」だな。
>
> if文 := if ( expr ) stmt | if ( expr ) stmt else stmt
lexだとこのif文の定義でwarningが2個出ますよね。
0280デフォルトの名無しさん
NGNGcaseの範囲指定できれば随分見た目がスッキリすると思うが。
それか、例えば↓な感じで1行にまとめて書ければなぁ。
case (1,3,5): // 1,3,5を個別指定
case 1-4: // 1から4までの範囲指定
0281デフォルトの名無しさん
NGNG_で始まる識別子は... グフッ
0282デフォルトの名無しさん
NGNGそれを許すと 'A'-'Z' のようなコードが多発して
EBCDICで逝くコードが続発しそうだ。
それはおいといて、今ので全然不自由してないんだけど
少数派か?
0283デフォルトの名無しさん
NGNGcase (1,3,5): くらいなら
case 1: case 3: case 5: と書いてもまあ悪くないと思う。
非常に多くの場合に同じ処理をすることはよくあるのだろうか?
0284デフォルトの名無しさん
NGNGうーん、どんなかたちであれ循環参照は避けた方が良いと思うから、
設計側で対処するべきだと思うけどなぁ
0285デフォルトの名無しさん
NGNG私も、
年に一回ぐらい「範囲指定できたらいいのに」と思う。
年に数回「お前のバグだろ、break ないぞ、ゴルァ」と怒る
ぐらいだ。nobreak がデフォルトになると、下らんデバッグの時間が減りそうだけど。
0286デフォルトの名無しさん
NGNG#define require(filename) \
#ifndef filename ## _provide \
#define filename ## _provide \
#include <filename> \
#endif
0287デフォルトの名無しさん
NGNGrequire(stdio.h)
require(stdio.h)
require(stdio.h)
require(stdio.h)
0288デフォルトの名無しさん
NGNGプリプロセッサ命令自体をマクロ展開できたっけ?
0289286
NGNG0290デフォルトの名無しさん
NGNGできればいいのにね。
まああの文法じゃ拡張しようがないけど。
; MASMのマクロは一貫性ゼロだけど便利だったなあ。
0291デフォルトの名無しさん
NGNGBorland C++ってオープンソースだったっけ?
0292デフォルトの名無しさん
NGNG272は253で
> ブルースエバンズ(著名な方のようですがスペルを忘れました)のCコンパイラ(再帰下降法)の
> ソースを覗いてみたら、そういうふうになっていたような気が、、、。
て書いてるから、bccてのはブルースエバンズ・C・コンパイラのことなんじゃないか?
0293デフォルトの名無しさん
NGNGBorland C++ のソースもがんばって探すと落ちてるよ。
0294291
NGNGマジすか?
冗談すよね?
ほんとだったら、ほしい!!
(見てどーすんだ、、、)
0295デフォルトの名無しさん
NGNG現MS の C# 作った人が Borland にいたときに書いた、TurboPascal の
コンパイラソースも出回っている。
アメリカには残っていないようだけど、ブラジルあたりのアングラサイトで見かけた気がする。
0297デフォルトの名無しさん
NGNGそれと、ほんとならどっかの掲示板にあぷしてくれ
0298
NGNGsprintfバンザイ!
0299デフォルトの名無しさん
NGNG単純なベンチプログラムでも作って確認してみるとわかる。
0300デフォルトの名無しさん
NGNGって、C++とは無関係だな。
0301デフォルトの名無しさん
NGNGgotoバンサイ!
0302デフォルトの名無しさん
NGNGstrcpyやstrcatもあんまりhot spotでは使わないからsprintfでもいいんじゃない?
バッファオーバーフロー対策ではsnprintfの使い勝手が(・∀・)イイ!!
0303デフォルトの名無しさん
NGNGそういう意味では std::string() に sprintf() ライクな書式指定つき文字列作成機能がなかったのが
残念だ。MFC/WTL の CString にはあるんだけどね。
0304デフォルトの名無しさん
NGNGsnprintfはANSI標準にないからな。
まあ作ればいいんだけど。
フォーマット書式文字列自体をコンパイルしてくれる仕様だったらいいんだが。
どうせほとんどfixed文字列使うんだから。
0305デフォルトの名無しさん
NGNGC99で標準になったYO!
0306名無しさん@Vim%Chalice
NGNGvirtualってのがわけわからん。
Delphiでも見かけたような気がするが、他の言語にはないよね?
M$が倒れる
↓
VC++も逝く
↓
Wisoでの仕事がなくなる
↓
C++のシェアがガタ落ちになる(予定)
↓
uma-
0307デフォルトの名無しさん
NGNG> Delphiでも見かけたような気がするが、他の言語にはないよね?
いいえ。っつか、むしろ他の OOPL だと virtual がデフォルト。
0308デフォルトの名無しさん
NGNGC++は必要じゃないのん?
VCが逝っても、C++のシェアがガタ落ちにはならんと思ふ。
もしVCが逝ってC++のシェアがガタ落ちなら Cのシェアも同様にガタ落ちでわ?
0309デフォルトの名無しさん
NGNG0310デフォルトの名無しさん
NGNGMSが潰れても、OOPにはCよりもC++のほうが便利だから
同じようなソフトがプラットフォームを変えて出現すると思われ。
0311デフォルトの名無しさん
NGNG組み込み系とかで。
0312デフォルトの名無しさん
NGNGそれって,C が廃れてもアセンブラは残るだろ。組み込み系とかで。
って言っているのと同値。
fortran / cobol が,なんだかんだ言われても生き延びているように
C++ はそうかんたんには滅びなくなりました。
0313デフォルトの名無しさん
NGNGGCCも4が出る頃にはLinuxあたりもC++で書き直されている...わけないか(藁
0314デフォルトの名無しさん
NGNG> いわゆる「左くくり出し」だな。
(略)
> if文 := if ( expr ) stmt E
> E := (空列) | else stmt
これじゃあ、if (expr) [[if (expr) stmt else stmt]],
if (expr) [[if (expr) stmt]] else stmtとどちらでも良くて、『曖昧な文法』のままじゃん。
文法、いわゆる形式言語の話と、
特定のparser generatorの(LL(1)に逸脱した)仕様の話を混同してない?
if (expr) stmt else stmt endif
にするしかないよ。こうしないと、LL(1)解析可能どころか、
『文脈自由言語族に属する曖昧でない文法』じゃないから。
実用上はどうでもいいから、「逝ってよし」とは思わないけど。
0315デフォルトの名無しさん
NGNGとは言ってもkernel部分はCだし、UIというかCOMコンポーネント周りは
どんどんC# & CLRで置き換えられていきそうだし、すぐになくなる事は
ないにせよ、C++で書かれた部分は減っていきそうだな。
0316デフォルトの名無しさん
NGNG> lexだとこのif文の定義でwarningが2個出ますよね。
lexじゃなくて、yaccね。
shift/reduceがconflictうんぬんって。
0317デフォルトの名無しさん
NGNGLinuxじゃないんだからカーネルはCじゃないだろ。NTのマイクロ
カーネルはアセンブリだと思うけど。で、周りのサービスオブジェクト
がC++。ドライバもC++とインラインアセンブラ。
流れ的には、OS/サーバ/データベースみたいなハコ部分はC++、
ハコの中身はC#その他だね。CLRそれ自体も当然C++。
0318デフォルトの名無しさん
NGNGそーなの?
じゃWin32APIはCだけど、どういうこと?
0319デフォルトの名無しさん
NGNGWIN32APIがC++で書かれてたら
Cで使えなくならない?
0320デフォルトの名無しさん
NGNGAPIがCだからどうだと? 意味がわからん。
0322318
NGNG>>317の主張だと、Win32APIはアセンブラかC++のはずじゃない?
これって現状のことを言ってるんだよね?
C++をCでラッピングするってのは変だし、あのAPI群が全部アセンブラっ
てのもちょっと無理がある。だから、
>LinuxじゃないんだからカーネルはCじゃないだろ。NTのマイクロ
ってのは本当かなー、と思ったということ。
0323デフォルトの名無しさん
NGNG0324デフォルトの名無しさん
NGNG0325失貴君
NGNG0326デフォルトの名無しさん
NGNG0327デフォルトの名無しさん
NGNGVBのマニュアルでさえ、外部リンケージの呼出し規約載ってるから読め!
$(GLIBC)/sysdeps/i386/sysdep.hで、system callどうやってるか見るとかさ。
0328デフォルトの名無しさん
NGNGまぁそれが順当だろうな。
0329デフォルトの名無しさん
NGNG>WIN32APIがC++で書かれてたら
>Cで使えなくならない?
実際に一部 C++ 的な部分もあるけど
IShellFolder とか IDropTarget とか、あのへん
えぇ、C から使えなくはないけど、大変に面倒でイヤです
C 使ってる人は諦めて C++ へ移行しませう
0331デフォルトの名無しさん
NGNG0332デフォルトの名無しさん
NGNG速度を見ればわかるでしょ?
0333デフォルトの名無しさん
NGNGNTの最初のバージョンはCだったかもしれんが、VC++6なんてツール
無かった時代の話だし、開発者の人数も(比較的)少なくてチームリーダの
意向がそのまま通った時代。ゲイツがC++を勧める以上、WindowsXPの
カーネルがC++になってない理由は無い。
0334デフォルトの名無しさん
NGNG0335デフォルトの名無しさん
NGNG変更できます。
0336デフォルトの名無しさん
NGNGint strcmpW(const wchar_t *pwc1, const wchar_t *pwc2)
{
int ret = 0;
while ( !(ret = *pwc1 - *pwc2) && *pwc2)
++pwc1, ++pwc2;
return ret;
}
こんなの発見。strcmpと違って返り値は-1,0,1じゃないんだね。
0337デフォルトの名無しさん
NGNGこれってstrlen(pwc1) >= strlen(pwc2)の局面しか使わないのかね?
0338デフォルトの名無しさん
NGNGstrlen(pwc1) < strlen(pwc2)
でも問題ないよ。
*pwc1=='\0' の時点で、(*pwc1 - *pwc2) !=0 になってループを抜けるから。
0339デフォルトの名無しさん
NGNGアセンブラからC++呼ぶのは面倒じゃないのかな。
0340デフォルトの名無しさん
NGNGそれは extern "C" とか使えばいいよ。
0341デフォルトの名無しさん
NGNG>そういう意味では std::string() に sprintf() ライクな書式指定つき文字列作成機能がなかったのが
>残念だ。MFC/WTL の CString にはあるんだけどね。
そういうときは、stringstream だね。激重だけど。
0342336
NGNGアセンブラが必要なところは、ほとんどインラインアセンブラで済ましてるみたいだよ。
さすがに初期化コードは.asmだったが。
元々マルチプラットフォームなOSだから、アセンブラ自体あまり使ってないみたい。
0343デフォルトの名無しさん
NGNGstrcmp って -1, 0, 1 だったか?
たしか strcmp も 負、0、正 だったと思うが、どうよ。
0345デフォルトの名無しさん
NGNG0346デフォルトの名無しさん
NGNG0348デフォルトの名無しさん
NGNG0349デフォルトの名無しさん
NGNG0350デフォルトの名無しさん
NGNG0351デフォルトの名無しさん
NGNG知らないでネスティングして使ってると期待通りに動かない。
せめてハンドルとかでコンテキストを隔離できるようにしてほしい。
0352デフォルトの名無しさん
NGNG「一見便利そうだけど、つかうとドツボにはまる」
Cの罠関数、という罠。
0353デフォルトの名無しさん
NGNGだけど、これらの罠関数に嵌って原因をちゃんと理解できたら半人前と判断できるよね?
でもシステム系のプロの多くは実装方法を教えても原因にはピンとこないらしい。
0354デフォルトの名無しさん
NGNGこのあたりの解決は、Eiffelの仕様がうれしいのだが。
0355デフォルトの名無しさん
NGNG> カーネルがC++になってない理由は無い。
お前の妄想しか根拠はないのかよ
■ このスレッドは過去ログ倉庫に格納されています