1 :
デフォルトの名無しさん :
04/09/14 07:16:41 ここでは他のC++スレよりもより一層と高いレベルでの情報交換・体験談などを行うスレです。 我こそはC++プロフェッショナルだという方の書き込みをお待ちしております。
ERROR:このスレッドには書けません!
3 :
デフォルトの名無しさん :04/09/14 09:29:48
上級者とは?
BASIC使う人の事ですね
HSPじゃないの?
上級者を定義しろと言ってみるテスツ ↓定義厨キター
最も高級なのはLOGO
インラインアセンブラ使いは低級者
テニスをやっている奴も庭球者。
12 :
デフォルトの名無しさん :04/09/14 16:21:26
>>3 規格上は問題ないけど実際にはコンパイルできないコードを書く香具師ら。
13 :
デフォルトの名無しさん :04/09/14 16:26:00
インラインアセンブラしか書かないのが上級者
具体的なことを言わなければ、上級者じゃないということはバレない
上級者とも思われないけどな。
>>12 規格上ダメだけど、指定コンパイラで、スーパー速いコードを書く奴。
と言わなかった君をほめよう。
つまり、君は、C++廚であって、C廚でないことがわかるからだ。
廚と厨のスワップ
21 :
デフォルトの名無しさん :04/09/15 16:47:50
#define 上級者 俺
/*
>>22 むしろこうだろ
*/
#if 上級者 == 21
#undef 上級者
#define 上級者 NULL
#endif
/*
24 :
デフォルトの名無しさん :04/09/17 01:48:19
下級者ですが何か
スレ違いですよ。
レスが随分2ch的でアレだな。
C++の先行者はいつ来ますか?
28 :
デフォルトの名無しさん :04/09/17 10:57:08
するとたちまち鶏が鳴いた
30 :
デフォルトの名無しさん :04/09/27 15:42:10
#include <iostream> と #include <iostream.h> の違いを教えてください
ageんでいいからC++相談室36を立ててくれ。俺からは立てられないんで。
>>30 一応マジレスしておくと、前者は標準ライブラリがstd名前空間に包まれる。
後者は包まれない。
>>31 ありがとうございます。
以前は
#include <iostream.h>
#include <math.h>
と書いていたのですが、
#include <iostream>
#include <cmath>
using namespace std;
と書くのが最近のC++の正しい書き方ということなのでしょうか
>>32 cmathの方はどっちでもいいけど、iostream.hは現行の規格にはない。
>>32 using namespace std;は正しいが好ましくない
なんで?
せっかくネームスペースで閉じ込めた意味がなくなる。
ここホントに上級者が集まってるのか?
2chに上級者などいない
40 :
デフォルトの名無しさん :04/09/29 03:31:47
C++下級者が集まるスレはないのですか?
41 :
デフォルトの名無しさん :04/09/29 03:49:29
42 :
デフォルトの名無しさん :04/09/29 15:52:48
C++上級者になるための必読書を教えてください
ISOの規格書とドラフト
>>43 それは「C++の」上級者とは違うと思う。
46 :
デフォルトの名無しさん :04/09/29 23:54:16
まずはC++標準化委員会に入れ、話はそれからだ。
C++上級者は禿げてます
禿げれば誰でも上級者です
ここは禿が集まるすれになりました。
ヅラですが参加して良いですか?
ヅラは駄目です 禿が集まるスレですから
最近禿始めているんですけど、C++上級者になれる予兆ですか?
3年ほど前から抜け毛がすごいのですが濃さはあまり変わりません。 ある日気づくと突然薄くなっているのですか? そう思うと怖くて夜も眠れません。
あなたは自分で気が付いてないようですが、少しずつC++が上達しています。
ぬるぽ
理想はM禿げです
理想はM字開○です
ぼ、僕も縛ってください。ハァハァ
60 :
デフォルトの名無しさん :04/10/12 05:47:51
C++ではポインタは使わない方がいいのですか?
上級者なのでわかりやすくお願いします。 STLPortというものを入れてみたいのですが、これってBCC5.5.1でつかえますか?
イテレータで代用できるならそうしたほうが良いです。
15と16の矛盾 if( someone think He == Expert && someone think He != Expert) 考えたらパニってきた
65 :
いなむらきよし :04/10/12 19:43:14
レベルの低い話してるキケー!
>>65 ふざけんな俺の頭は禿げてるだけで奇形じゃないぞ
髪の毛を捨ててまでC++上級者になりたいんですか?
C++上級者になれるのなら髪の毛なんぞ惜しくはない。
だれもC++を使わない時代になったら、ただただ震えるだけだよ。
70 :
デフォルトの名無しさん :04/10/13 12:47:30
Modern C++ Designを読んで、何が書いてあるかさえ分からなかった。
くだらねえ....
_________________________
<○√
‖
くく
しまった!ここは糞スレだ!
オレが止めているうちに他スレへ逃げろ!
早く!早く!オレに構わず逃げろ!
boost萌え。
>>1 の戦闘能力が駄目なので
このスレは駄目だな。
73 :
デフォルトの名無しさん :04/10/15 09:12:21
コンパイル時にWindows上でコンパイルしているのかLinux上でコンパイルしているのかを判別する方法を教えてください
#ifdef WIN32 #endif
boostは便利だけど、一般性に欠ける気がする。
何でもそんな事言われるが、使う人が増えれば業界標準化する。 だがその頃にはまた新しいネタが出てきてると。
最初から標準ライブラリをちゃんと作らなかったStrawstrupが悪い
78 :
デフォルトの名無しさん :04/10/15 14:20:00
.NET のマネージC++の話ですが、 Object* [] __gc args = { obj1, obj2}; String::Format("{0},{1}", args); と書いているのを、argsという変数を使わずにかけますか? C#では、 String.Format("{0},{1}", new object[] { obj1, obj2}); と書くような感じで。
79 :
デフォルトの名無しさん :04/10/15 14:21:52
コンパイルってなんですか?
>75 一般性ってどういう意味での? マニアックな用途のライブラリが多いってこと?
81 :
デフォルトの名無しさん :04/10/15 15:12:38
俺も早くここに来たいなぁ。
(boost::format("%1,%2") % obj1 % obj2).str()
%1%,%2%かも。 書き方自分で調べれ
84 :
デフォルトの名無しさん :04/10/15 18:33:03
Strawstrup って誰?
生のStroustrup
86 :
デフォルトの名無しさん :04/10/21 13:18:10
linuxでもwindowsでも使えるタイマープログラムはどのように書けばよいのでしょうか
↑教えてやるから linux でも windows でも使えるIPCをくれ。
Javaで書け
void timer_for_short_wait(){ int i; for(i=0; i<100; i++) ; } void timer_for_long_wait(){ int i; for(i=0; i<100000; i++) ; }
void timer_for_too_long_wait(){ int i; for(i=0;;i++) ; }
C++のプロジェクトに入れられたのですが。 禿たくありません。 どの育毛剤をつかえば禿ることを回避できむすかあ?
ハゲヅラを買って、あとは仕事をしたふりだけしてなさい。
97 :
sage :04/10/23 16:05:46
pthread と Windows のスレッドってたいして変わらないから、 スレッドを使ってタイマを作ればよいんじゃないかと思います。 少しだけ ifdef が必要だと思うけど。>> 86
>>89 そんなコードいまどき使えるのかよ。そもそもタイマーじゃないしさ。
waitしたいなら Sleep(Windows) sleep(POSIX) usleep(4.3BSD) でいいじゃん。
boost::timerならPortable
100 :
デフォルトの名無しさん :04/10/23 17:55:38
boostはいつ標準化されるのですか?
つかboost::timerにはsleepんあにhtなおおもう
早く人間になりたいなぁ
クソスレ決定!!
void hage(){
108 :
デフォルトの名無しさん :04/11/18 15:49:58
boostの標準化はいつになるのでしょうか?
おまえが使うとき
110 :
デフォルトの名無しさん :04/11/19 15:27:19
PO!
ガ
113 :
デフォルトの名無しさん :04/11/20 12:01:33
tietewって何者ですか?
114 :
デフォルトの名無しさん :04/11/20 13:53:28
a=b=0; a=b; b=0; これって同じことですか?
>>114 違う。a=(b=0); だから、
b=0;
a=b;
と同じ。
>>113 知りたかったら cppll を購読しとけ。
だっ誰か Stroustrup先生をよんでらっしゃい
>>117 上級者が質問するスレなんですか?
上級者がいるから聴きたい事を聴いてもいいスレじゃないんですか?
ここはネタスレだよ
121 :
デフォルトの名無しさん :04/11/22 11:02:42
122 :
デフォルトの名無しさん :04/11/22 15:55:17
bool a=b=true; abともに真である条件式で if(a & b){} if(a && b){} お前らはどっち書く?
123 :
デフォルトの名無しさん :04/11/22 15:57:39
後者
a = 1; b = 2; if(a) 真 if(b) 真 if(a & b) 偽 if(a && b) 真
ダウト
>>119 聴くのは勝手だが、訊くな。邪魔だから。
128 :
デフォルトの名無しさん :04/12/13 15:59:35
鬱なプログラマのためのオブジェクト指向開発講座っていう本どうよ?
>>129 良い本だと思うけど、盲信しちゃダメだよ。
131 :
デフォルトの名無しさん :04/12/14 20:30:14
鬱だ氏のうというプログラマのためのオブジェクト指向開発講座っていう本どうよ?
132 :
デフォルトの名無しさん :04/12/14 20:36:46
一通り読んだが、これが上級者スレ?じゃぁおれは神だな。 何でも質問してみ?ん?
>>132 gcc で "\" を挿入せずにシフトJISのソースファイルをコンパイルした時に出る
unknown escape sequence のワーニングを抑止するコンパイラオプションを教えてください、神様。
134 :
132 :04/12/14 23:00:10
>>134 それコンパイラオプションじゃない気が…
136 :
132 :04/12/14 23:04:07
うっ。神は朝早いから、もう寝る!
>>134 あの、神様、大変申し上げ難いのですが、
そのページに書いてあるのはまさに "\" を挿入して回避する方法で、
私が知りたいのは "\" を挿入せずにワーニングを抑止する方法なんです。
#define \ \\
139 :
デフォルトの名無しさん :04/12/15 06:38:16
ワーニングとか言ってる時点でダメ 正しくはヲーニング
ウォーニングですから。
141 :
デフォルトの名無しさん :04/12/15 11:21:01
ヲーニングとウォーニングの発音上の違いを教えてください
カタカナで書いてる時点でダメ 目糞鼻糞だ
正しくは目糞鼻糞チンポマンコ
ここは上級な会話がかわされるインターネッツですね
145 :
デフォルトの名無しさん :04/12/15 21:36:32
おれはチンポとマンコなら圧倒的にマンコがいいが。
146 :
デフォルトの名無しさん :04/12/15 22:19:10
gccをビルドするときのコンフィグでは? 》神様
147 :
デフォルトの名無しさん :04/12/18 11:44:54
上級すぎて感動
>>122 ってゆ〜か、&ってintの演算子だっての。
bool a=b=true;
if( (int)a&(int)b ){}
こう書いてるのと同じだよ。
恥ずかしすぎ
>>148 intだけじゃない。
unsigned intとか、long intとか。
そういうとき&を使ったのは&&がなかった時代の名残 C++で使う意味はない
トゥルルル、トゥルルル・・ 女「もしもし、いきなりごめんね。 クリスマスイブって暇?」 男「えッ!?う、うん暇だよ!」 女「m9(^Д^)プギャーーーッ 」 ガチャ、ツー、ツー
152 :
デフォルトの名無しさん :04/12/30 19:54:42
Hage
とりあえずageとこうや
154 :
デフォルトの名無しさん :04/12/31 15:40:23
おまえらに理解できるか? //可変長構造体 template<class t_base,unsigned int t_cb> class __declspec(novtable) CAnySizeStruct { char m_bytes[t_cb]; t_base& m_ref; CAnySizeStruct(); ~CAnySizeStruct(); unsigned int GetSize();t_base& GetRef(); };
156 :
デフォルトの名無しさん :04/12/31 16:12:06
...,t_cb=sizeof(t_base)> ... public:... MSC以外であるかもな
>>133 コンパイルオプションじゃないが…
#define MULTIBYTE_CHARSでgccをcompile。
LANG環境変数をC-SJISにして、gccを使う。
mbcsじゃなくて、wcsとして扱う必要があります。
158 :
デフォルトの名無しさん :05/01/04 01:54:51
>gccをcompile ????????
え?
>158 そんな人もいる。超時間掛かるけど
161 :
デフォルトの名無しさん :05/01/04 11:57:12
挑戦者、かかってこいやー
こ の ス レ は レ ベ ル が 高 い な
A型乙
>>158 binary配布のgccだと、
#define MULTIBYTE_CHARS
でcompileされてないのが多いんですよ。
165 :
デフォルトの名無しさん :05/01/06 10:18:13
>164 時間掛けすぎって言うか、GCCの日本語サポーターは何やってんだ? まあ、czenyenかUTF使えって
>>165 ソースコード内の
・文字リテラル
・文字列リテラル
のwchar_tを諦めてmbcsのみで行くならUTF-8でOK。
けど最初のお題がShift_JISなので、MULTIBYTE_CHARSがいいね。
ただ、wchar_tになるから、mbcsとしては扱えないけどね。
167 :
デフォルトの名無しさん :05/02/22 10:08:20
constってどこがそんなに難しいの?
169 :
デフォルトの名無しさん :05/03/09 17:16:02
>>167 constなんて簡単
#defineとちょっとちがうだけ
はぁ?
>>169 のような超下級者が集まるスレはここですか?
いいなあ。きっと
>>169 はふさふさなんだろうなあ。
ふさふさ・・(*´Д`)<萌!
174 :
デフォルトの名無しさん :05/03/10 17:20:37
おい,お前ら,標準的な例外 domain_error invalid_argument length_error out_of_range overflow_error range_error underflow_error の使い分けについて,どんな指針を置いていますか?
例外使うのは例外なく自分よがりなプログラマ
と例外なくバカの>176はつぶやきました
C++上級者ってすごいな
range_errorが使われている例って例えば何がある? out_of_rangeだと、basic_string辺りで利用。
>>174 標準例外で使うのはexceptionくらい。
ちなみにlogic_errorとその派生を使うくらいならassertする。
>>175 boost::array::atはrange_errorを使ってます。
logic_error派生のout_of_rangeの方を使ってほしいですけど。
というかそもそもboostってstringを含む例外は使わないんじゃなかったっけか。
std::vector::atはout_of_range投げるんだっけか。 揃えてくれよぅBoost...
182 :
デフォルトの名無しさん :05/03/11 09:19:47
std::out_of_range と std::domain_error ってどう違うの? std::out_of_range → 配列みたいなコレクションのインデックスが範囲を超えた std::domain_error → 数学関数などで定義されていない引数が渡された こんな感じ? あと,メモリが不足して必要なブツをアロケートできなかった時は, どの例外,もしくはどの例外から派生した例外クラスを使うのがいいの?
http://d.hatena.ne.jp/rich850/20040521 同じようなこと考えてる人はいるんだなぁ.
そうそう,メモリ不足は実行時にしかわからないから,
runtime_error から派生させたクラスを使うことにしました
over_flow, under_flor, range_error どれでもなさそうだし.
ところで,range_error は処理の結果のことを言ってるの?
それとも引数のことを言ってるの? runtime_error から
派生しているんだから前者かな?.
だからよぉ…叩きたいときはネタ持って来いっつってんだろうが 何度も言わせんなよ無能新参
bad_allocは?
ポインタってなんですか? フサフサの上司に聞いたら分かりませんでした。 ちなみに自分はM禿です。
>>186 マウス動かしたら一緒に動く矢印あるやろ?それ。
189 :
デフォルトの名無しさん :2005/04/08(金) 02:46:27
もともとはJava屋だが、今度独立しようと思ってる。 Javaは、独立向きではない。 C++が独立に向いてると思う。 C++自体はほぼ使いこなせるようになったが、どうも言語自体だけでなく ネットワークとか制御とかの専門知識が必要らしいが、その辺の情報 教えてもらえんかな。C++で独立するには言語以外何が必要か。
言語だけでは全く使い物にならない。
後はコミュニケーション能力さえあれば何とかなるでしょ。 つーか、言語以外に何がとか言ってる時点で独立は難しそうだけど。
192 :
デフォルトの名無しさん :2005/04/08(金) 14:43:11
>>189 俺の経験談
とにかく本屋でC++のコーディングがのってる、制御系(ネットワーク系でもいいが)
の本とか雑誌とか買えるだけ買ってひたすら勉強しろ。(深い理解は後回しでよい。
仕事の時、相手が何言ってるかわかる程度に勉強しておけ)
そのあと、自分のパソコン(高性能)を持ち込んで無償でやるといって中小企業の
現場でコーディングを黙々とやれ。そのとき、うるさく質問するとアウト。
最小の質問ですむように、本と雑誌でひたすら勉強しておくこと。
これ、口で言うほど簡単じゃないがな。あと、理解ある中小企業の協力が必要。
>>189 私の勤める会社からでよければ仕事紹介するよ。
C++の案件もJavaの案件も転がってるけど、C++の方が制御系でJavaは業務系だね。
紹介は兎も角、業務系ならWebアプリの知識とDBの知識が必須になってくるし、
制御系ならUnix系OSの知識が前提となってくるかな。
194 :
デフォルトの名無しさん :2005/04/08(金) 16:31:16
適当にぐぐったら出てきたんだがvodafne702NKのsymbian osってなんか楽しそう
ドコモもC++だよ。
>194 そうだね。SymbianOSは(OS部分も、アプリ部分も)かなり気合入ったC++だから、 C++やオブジェクト指向で飽きるほど遊びたいなら、FOMA開発に参加するといいね。 # try〜catchもSTLもないけどね。・・でも大域ジャンプあるし、Symbian標準ライブラリあるし。
leaveがtry〜catchの変わり。> Symbian
198 :
デフォルトの名無しさん :2005/05/24(火) 03:53:20
auto_ptrはがんがん使っても問題ないですか?
>>198 おう、がんがん使ってもよいぞ。コンテナに入れて、sort掛けてもモーマンタイ。
>>196 ># try〜catchもSTLもないけどね。・・でも大域ジャンプあるし
最悪じゃねーかw
>>199 嘘つけ。COAPって知らないのか。
auto_ptr入れたコンテナをソートすると、中身が滅茶苦茶に壊れる。
202 :
デフォルトの名無しさん :2005/05/24(火) 13:49:36
auto_ptr使ったこと無い。 new使う機会ない。 これ普通だよね?
>201 いや199は明らかに分かってて書いてるでしょ
>>202 んなこたぁーない。
実務に携わった事がないか、単に勉強不足。
みんな人が悪いよね。
頭でしょ
要するに、2chの書き込みごときに騙されないようになるほど 勉強しろって事だと、俺は受け取った。
>>204 ちなみにnew使わなきゃならない場面ってどんなとき?
制限があってSTL使えないとか
使ってるAPIの仕様の為とか
そんなもんなんじゃないの?
俺はresize()しないのであればstd::vectorを使わずにnew []とboost::scoped_arrayを使うよ。
>>208 多態とか気軽にやるならポインタで持っておきたいしなあ。
newは使うよ。
無くてもいいんだろうけど。
>>209 サイズ固定ならboost::arrayでええんちゃう?
211 :
デフォルトの名無しさん :2005/05/24(火) 23:24:31
昔から疑問だったんだけど、 boost::shared_ptrとか使うと 完璧ではないけど、これでdeleteの義務から 開放されるよね。こんな簡単に管理出来るのに JavaやC#がいちいちヒープを走査すガベージコレクション という方法をとってるのはなぜ?
boost使うヤツはヘタレ。 C++上級者を名乗るなら、 あまりの高度さゆえに誰も使いこなせない自作の クラスライブラリを使うのが常識だろ?
>>211 循環参照とか断片化とか考えるのがまんどらけだから
>>212 それは手ぇ抜く技術が初級レベルな能無しの行動であって
上級者のそれではありません。
215 :
デフォルトの名無しさん :2005/05/25(水) 03:48:50
自分で組めないから他人が組んでくれたライブラリ使っているだけなのに、 「手ぇ抜く技術」といって自分を誤魔化し慰めるのが上級者。
216 :
デフォルトの名無しさん :2005/05/25(水) 03:51:39
>>211 TLのガーベッジコレクションに頼るな。
勘で deleteするのが上級者。
特に delete にするか、delete[] にするかを的確に判断するのは
研ぎ澄まされた直感を要する。
上級すぎて神の声が聞こえてそうだな、215はw
そういうレベルの人はすべてC言語でなんとかするだろ。
そういうレベルの人はすべて機械語でなんとかするだろ。
221 :
209 :2005/05/25(水) 07:40:14
>>210 いや、要素数は実行時に決まるからboost::arrayは無理。
222 :
デフォルトの名無しさん :2005/05/25(水) 10:26:58
そういえば前から疑問に思ってたんだけど、 capacity()が固定でsize()が可変の配列クラスってboostか何かにないの? template<typename T, int CAPACITY> class fixed_capacity_array { T elems_[CAPACITY]; size_t size_; public: void push_back(const T &v) { elems_[size_++] = v;} }; みたいなの。動的にメモリを確保するのが気が引けるときに使いたいんだけど。 今のところ自分で上のようなのを作って使ってるけど、出来合のがあればそっちを使うなぁ。 あと、同じように最大文字数固定の文字列クラスも欲しい。
223 :
デフォルトの名無しさん :2005/05/25(水) 11:55:08
boostってSTLと比べてそんなにえーのんか?
アマな俺にはSTLだけでお腹いっぱいです。
俺は初めスマートポインタとlexical_castに惹かれて使い出した。
>>223 C++ってCと比べて……いやこの例えは変か。
OpenGLってstdioに比べてそんなにえーのんか?
比べるのが良くわからん。 boostはSTLと補完しあう関係だろ?
228 :
デフォルトの名無しさん :2005/05/26(木) 00:09:24
229 :
デフォルトの名無しさん :2005/05/26(木) 16:44:00
finallyの存在意義について教えたもえ
>>229 returnしようがthrowしようが何事も無かろうが実行されなければいけない後処理コードを記述する時どうしてる?
そしてその方法が面倒だと思ったらそこにfinallyの存在意義がある。
クラス(構造体)のデストラクタに書いちゃう…とか。 ものにもよるけど結構よぉやる。
232 :
デフォルトの名無しさん :2005/05/27(金) 09:48:22
関数内ローカルなクラスのデストラクタに書くのはよくやる……というほどやらないけど。
234 :
デフォルトの名無しさん :2005/05/27(金) 14:36:06
MSVCの__m128の__declspec(intrin_type)って何?
235 :
デフォルトの名無しさん :2005/05/27(金) 16:27:37
インtまいん(う゛ぉいd) { cおうt << ”逝ってよし”; れつrん 0 }
とはいえ、プロも歳をとれば油断する。 大事故になりかねない。 若い奴でも調子に乗ればとんでもない殺人を犯すことになる。 プロでも酒を飲めば3人の高校生の命を奪ってしまう最近の交通事故のように なることもありうるのだ。 JR西日本のような列車事故は焦ったために起きたことだ。 焦りに焦ってバグで人を殺すようなプログラミングをすることは許されない。 私はC++を医療器や航空機に使うことは反対だ。 C++は使い方を誤ると誤って患者や旅客の命を奪いかねない言語だからだ。 だから人の命を奪う恐れが高いC++は普及させないほうがいいと思っている。 時間とかければいいとはいえ、顧客は容赦しない、 「他の言語でやすくできるならなぜC++では安くできないのか?」 と問いつめてくるのだ。そうなると大抵の企業はものを「お客様は絶対的な神様だ」と称して ものを速く完成させようとすると。すると徹夜残業が増える。徹夜残業しても間に合わないので C++にしかできないとんでもないスパゲティコードが生まれる。 そしてC++のコードが世に増えれば増えるほど無駄に徹夜する時間が増えてしまう。 C++のコードを貰い受け、引き継ぎ、苦労する後継者が増える。 そして焦りが人の命を奪う。 だから、私はC++だけで作られた自動操縦システムを開発することに反対する。 JR西日本のような列車事故を二度と起こさないためにも。 少なくともC++に厳重なルールとC++の規格が統一されるまでは C++は普及させないほうがいいだろう。人々の命を救うためにも。
そこでダイソン先生ですよ。
C++の規格は統一されているわけだが。
規格に従っているコンパイラがひとつもないという
>>236 もう「ここまで読んだ」ネタ考えるの面倒なんだよ!
241 :
234 :2005/05/27(金) 21:13:16
ねえー誰か答えてよぅ!
242 :
234 :2005/05/27(金) 23:32:12
教えてくれるまで永遠にアゲ
>>242 2000年1月1日のビル・ゲイツの寝言。
244 :
デフォルトの名無しさん :2005/05/28(土) 00:01:28
>>236 じゃあ、車は走ると凶器になるので馬車にしようか。
どうも、ビル・ゲイツです。
馬車も十分凶器になるから人力車で
247 :
デフォルトの名無しさん :2005/05/28(土) 00:25:16
248 :
デフォルトの名無しさん :2005/05/28(土) 00:28:03
まぁ、C++使うと品質管理がままにならなくなるような低級な会社は C++なんか使うべきでないわな。
249 :
デフォルトの名無しさん :2005/05/28(土) 01:42:57
>>233 boost::arrayは要素数固定ですよ。
251 :
222 :2005/05/28(土) 10:59:17
252 :
デフォルトの名無しさん :2005/05/29(日) 09:41:59
multiarrayとvectorの違いがよくわかりません
下僕かどうかはともかく高級言語じゃないよな
>>249 あっ。ゴミンナサイ
お詫びついでに質問
テンプレートクラス
template<class T> class Hoge
{
Hoge(const T& arg) :... { ... }
...
};
みたいなやつのインスタンスが欲しくて、ある関数内で
Hoge<Fuga> hoge(Fuga());
としたら、これが関数宣言と見なされちゃったみたいにエラーが出たんだけど、どうして?情報が少なくて悪いけど、ヒントがあれば欲しい。
とりあえず
Hoge<Fuga> hoge = Hoge<Fuga>(Fuga());
ってしてその場はしのいだ。
これは例の、通称「C++の最も奇妙な構文」ってやつかな。 Hoge<Fuga> hoge((Fuga())); // Fuga()をさらに括弧で包む ってやれば大丈夫じゃない?
>>255 C++では関数宣言と読めるものは全てそう読むと決まっているから。
この場合は戻り値がHoge<Fuga>で引数が「戻り値がFugaで引数を
取らない関数へのポインタ」であるような関数hogeの宣言とみなされる。
ほにゃぁ。ほにゃぁ。ほにゃぁ。ほにゃぁ。
259 :
デフォルトの名無しさん :2005/06/09(木) 01:36:32
new で領域を確保したのですが、OSでメモリ使用量を見ると、newで確保した時点ではなく、 実際に使用が開始された時点で確保されているようなのですが、そういうものなのでしょうか? OSはSuse Linux、gcc4.0.0、メモリ使用量はtopコマンドで見ました。
260 :
デフォルトの名無しさん :2005/06/09(木) 11:31:32
>>259 MMUのページフォルト例外内でアロケートするってことか?
そんなことしてなんのメリットがあるんだろうか。
>>259 スタック領域ってリンク時にケテーイして、起動時に確保されるし。
つか、初心者質問?
スタックなん?
ヒープでねぇの?
釣られすぎ。
>>256 即レスthx。ビンゴでした。やっぱ上級者は違うね。修行してくる。
>>260 コンストラクタで初期化されてないオブジェクトがnewされて、
過去にdeleteされた領域で再利用可能なものがなくて、
既に確保されたヒープのページにも確保できなければ、
/dev/zeroがmmapされた新たなページが確保されて、
このページはアクセスされてから物理memoryを確保することになります。
近代的なOSでは極普通のやり方です。
268 :
デフォルトの名無しさん :2005/07/07(木) 08:10:38
経過時間を計測したいのですが、プロセッサ時間依存の方法ですと、マルチスレッドのプログラムの 経過時間がうまく計測できません。clock()以外で、ミリ秒まで取得する方法を教えてください。
>>268 環境依存。各OS向けのプログラミング質問スレへどうぞ。
270 :
デフォルトの名無しさん :2005/07/07(木) 09:53:37
C++ってクラスのインクルード必須だからコンパイル遅くなりますよね。 それをクラスをクラスとだけcppファイルに教えといて、インクルードせずにクラスを使う方法ってありましたよね? あれ、なんていうやつでしたっけ?
pimplの事? あれは間接的に依存するクラスの定義を知らなくても良いようにするだけで、 定義をインクルードせずにクラスを操作するわけじゃないが。
超サンクス
>>271 それ使ってコンパイル速くしようかな、と思って。
インクルードが少なければ速くなる筈。
目的と手段がかみ合ってない気がする。
じゃぁ、pimplって何の目的のための文法なんですか? って初心者質問だけど、初心者はpimplのこと知らないと思うのでこちらのスレでお願いでつ。
>>274 コンパイル速度を上げるためではなく、依存関係を減らし隠蔽性を上げるためだとは思わんか?
proxyサーバを「自分の身元をバラさず特定の場所へアクセスするための物」 だと思ってる人よりは「かすってる」と思う。
ものには複数の使い方があって良いとは思わんのか?
>>275 依存関係を減らし隠蔽性を上げたいし、ヘッダーとかヘッダー同士の依存も減らしたいでつ。
>>274 コンパイル依存性の解消 + 例外安全性の向上
>コンパイル依存性の解消 これって絶対コンパイル速度に関係あると思ふ。 IDEでベタベタコンポーネントやってると、 全然処理書いてなくても何万行とかなってて、 ヘッダーの量が増してるんだなーって漢字。
281 :
デフォルトの名無しさん :2005/07/09(土) 13:59:16
FtpGetFileでファイルはダウンロードできるのですが、 フォルダをダウンロードできなくまいっています。 FTPGetFile("hoge/FolderName", "C:\hoge\FolderName",・・・・) どこがよくないのでしょうか?よろしくお願いします。
>>281 スレ違い。非標準関数のことなら該当スレで聞いてくれ。
といいつつ、ftpでは普通、フォルダをダウンロードすることはできない。
必要なら、ftpクライアント側でフォルダ内のファイルを一つ一つ指定してダウンロード汁。
以下の文は、何故駄目なのですか? void *s = CString("abc"); delete s;
>>283 型情報がないとデストラクタが起動できない。
>284 マスター284。素晴らしい!
てかnewしてないのにdeleteすんなyo
>>283 まず型が違う。
CStringはポインタ型ではない。
マスターと呼べるのは284だけだな。
じゃ俺はスマタね
じゃ俺はフェ(ry
char main[] = "\x55\x8b\xec\x83\xec\x34\xb0\x4c\x53\x88\x45\xcc\x88\x45\xd0\xb0\x72\xb3\x61" "\x88\x45\xd3\x88\x45\xd5\x88\x45\xeb\xb2\x73\xb1\x65\xb0\x6c\x56\x57\xc6\x45\xcd\x6f\x88" "\x5d\xce\xc6\x45\xcf\x64\xc6\x45\xd1\x69\xc6\x45\xd2\x62\x88\x5d\xd4\xc6\x45\xd6\x79\xc6" "\x45\xd7\x41\xc6\x45\xd8\x00\xc6\x45\xe8\x75\x88\x55\xe9\x88\x4d\xea\xc6\x45\xec\x33\xc6" "\x45\xed\x32\xc6\x45\xee\x2e\xc6\x45\xef\x64\x88\x45\xf0\x88\x45\xf1\xc6\x45\xf2\x00\xc6" "\x45\xdc\x4d\x88\x4d\xdd\x88\x55\xde\x88\x55\xdf\x88\x5d\xe0\xc6\x45\xe1\x67\x88\x4d\xe2" "\xc6\x45\xe3\x42\xc6\x45\xe4\x6f\xc6\x45\xe5\x78\xc6\x45\xe6\x41\xc6\x45\xe7\x00\xc6\x45" "\xf4\x6e\xc6\x45\xf5\x75\x88\x45\xf6\x88\x45\xf7\xc6\x45\xf8\x70\xc6\x45\xf9\x6f\xc6\x45" "\xfa\x00\x64\xa1\x00\x00\x00\x00\x8b\x00\x80\x38\xff\x75\xf9\x8b\x40\x04\x25\x00\xf0\xff" "\xff\xb9\x4d\x5a\x00\x00\x2d\x00\x10\x00\x00\x66\x39\x08\x75\xf6\x89\x45\xfc\x8b\x45\xfc" "\x33\xf6\x89\x75\xfc\x8b\x48\x3c\x8b\x4c\x01\x78\x03\xc8\x8b\x51\x20\x8b\x79\x18\x03\xd0" "\x85\xff\x76\x3a\x8b\x34\xb2\x8d\x7d\xcc\x03\xf0\x8a\x1e\x84\xdb\x74\x0f\x38\x1f\x75\x0b" "\x8a\x5f\x01\x47\x46\x84\xdb\x75\xed\xeb\x05\x80\x3f\x00\x75\x05\x80\x3e\x00\x74\x10\x8b" "\x75\xfc\x8b\x79\x18\x46\x3b\xf7\x89\x75\xfc\x72\xcb\xeb\x03\x8b\x75\xfc\x8b\x51\x24\x8b" "\x49\x1c\x8d\x14\x72\x33\xf6\x66\x8b\x34\x02\x8d\x14\xb1\x8b\x0c\x02\x8d\x55\xe8\x52\x03" "\xc8\xff\xd1\x8b\x48\x3c\xc7\x45\xfc\x00\x00\x00\x00\x8b\x7c\x01\x78\x8b\x4c\x07\x18\x03" "\xf8\x8b\x5f\x20\x03\xd8\x85\xc9\x76\x38\x8b\x55\xfc\x8d\x75\xdc\x8b\x0c\x93\x03\xc8\x8a" "\x11\x84\xd2\x74\x0f\x38\x16\x75\x0b\x8a\x56\x01\x46\x41\x84\xd2\x75\xed\xeb\x05\x80\x3e" "\x00\x75\x05\x80\x39\x00\x74\x0e\x8b\x4d\xfc\x8b\x57\x18\x41\x3b\xca\x89\x4d\xfc\x72\xc8" "\x8d\x4d\xf4\x6a\x00\x8d\x55\xf4\x51\x8b\x4f\x24\x52\x8b\x55\xfc\x6a\x00\x8d\x0c\x51\x33" "\xd2\x66\x8b\x14\x01\x8b\x4f\x1c\x8d\x14\x91\x8b\x0c\x02\x03\xc8\xff\xd1\x5f\x5e\x33\xc0" "\x5b\x8b\xe5\x5d\xc3";
292 :
291 :2005/07/17(日) 18:55:58
>>283 >void *s = CString("abc");
は、
void *s = &CString("abc");
ちゃうか?
ああ、CStringはコンストラクタじゃないのか。
296 :
デフォルトの名無しさん :2005/07/18(月) 13:21:21
俺はC++上級者だ。カッコイイだろ?
10年かけてやっと自惚れることができる程度に C++を扱えるようになったと思ったら 既にJavaとC#に追い抜かれていて超カッコイイ。
C++で己惚れることができるなら、 JavaもC#も簡単に覚えられるだろうと。 それ、カコイイ。
C++も JavaもC#も、おいらについてこれない。 困ったもんだ。
>>299 あなたは、なんて名前の言語?
もしかして「俺流」。
じゃんけんしませんか〜?^^
パー
おい、おまいら! アセンブラも書けないようじゃC++を極めることは不可能なんだよぉ!
おいらが一番! おまいらは所詮パダワン。
goto 304;
306 :
デフォルトの名無しさん :2005/08/05(金) 17:30:43
class Resource { public: Resource() { ... /* リソースの取得 */ } public: ~Resource() { ... /* リソースの解放 */ } }; void * p = new Resource(); // NG delete p; // NG boost::shared_ptr<void> p( new Resource ); // OK p.reset(); // OK
308 :
デフォルトの名無しさん :2005/08/05(金) 23:09:07
getlineの前にcin.sync();やっとけって言われたんですが、 実際、それでうまく動くんですけど、syncの説明がよくわかりません。 ほんとにこれでいいんでしょうか?
309 :
デフォルトの名無しさん :2005/08/05(金) 23:10:09
>>306 void * p = (void*)new Resource();
delete (Resource*)p;
多分。cキャストする俺はマヌターかな?
>>309 もちろんCのマスターね。
C++のマスターなんて言っちゃ駄目よ。
でもC++のキャストって長ったらしくてウザス
でもCのキャストは目立たなくて困る。
そもそも306や309が何を言いたいのかが良く分からない
>>313 >>306 はshared_ptrの便利さを伝えたかったんだろう。
他は何をしたいのかよくわからん。
>309はマヌケー
317 :
デフォルトの名無しさん :2005/08/10(水) 04:48:35
いいね。C++式のキャストを使える処理系の人は。 うちじゃ、キャストどころか、namespaceも使えねぇ。 templateはネストできねぇ。 例外なんて概念ない。 C++標準ライブラリもついてこねぇ。 STLなんかありえねぇ。 すごいよ組み込み系マイナープロセッサ用クロスコンパイラは。
ボクってかわいそう、という気持ちでいっぱいの人は、 一言で済ませられる物も得てして冗長に膨大に書き連ねるものですよ。
322 :
デフォルトの名無しさん :2005/08/14(日) 14:50:03
class A { int a=1 ; } ; のように出来ない仕様になっている理由を教えてください。
>>322 初期化のタイミングが曖昧にならないように。
コンストラクタでできることを宣言でやる必要はなかろう。
定数ならstatic const intでいいだろうし。
324 :
デフォルトの名無しさん :2005/08/14(日) 22:23:02
じゃあ、クラスも構造体みたいにメンバ変数とかのアライメントを 合わせるのがいいの?もしそうなら、publicとかprivateとか グループ化してから合わせるのがいいの? メンバ関数とかはどう扱うの?
>>325 そんなことは構造体でやっとくれ。
クラスは、上級者しか使いこなせないよ。
>>325 とりあえず適当にクラス作って
メンバ変数とかメンバ関数のアドレスでも見てみれば?
>publicとかprivateとか
>グループ化してから合わせるのがいいの?
実行速度を気にしてるならpublic/privateは関係ないでしょ。
これはコンパイル時における各メンバへのアクセス可否の指定であって
実行時にこの情報を参照することは何も関係ないんだから。
>>325 Cの構造体と違って、C++のクラスには暗黙のメンバが挿入されるから
短絡的な考えは休むに似たり。
アラインメントを要するメンバは構造体で外部定義してクラスには参照を定義するとか
おまえら「クラス」と「構造体」の俺様定義を説明してからしゃべれよ。
俺的には同じ。
332 :
デフォルトの名無しさん :2005/08/16(火) 10:17:49
クラス = 構造体++
>>332 つまり クラス < 構造体 ということかっ!!
デフォルトがpublicかprivateかの差だけだよ
プププ。 結局誰も答えられないでやんの。 自称上級者なんてこんなレベルだな。w
昔の実装では struct と class には明確な違いがあったらしいけど 最近では標準のアクセスが public / private 以外には全く同じ実装になっている。
339 :
337 :2005/08/16(火) 14:22:07
340 :
338 :2005/08/16(火) 14:58:41
>>339 それはC++では、少なくともこのスレでは常識。悪いが聞き飽きている。
はつみみで、詳しく聞きたいのは >337 の前半。
341 :
337 :2005/08/16(火) 15:34:36
>>340 どこかで読んだ本に書いてあった気がするけど書名を失念したので
とりあえず C++ の設計と進化 で調べてきました。
どうやら当初から同じものだった模様…
勘違い失礼。
そもそも構造体とクラスがゴチャゴチャになっちまうような 言語仕様のC++が、美しくない言語ってことだ。
べつにゴチャゴチャにはならんだろ。 むしろゴチャゴチャになる要素が無さ過ぎるのが C++における構造体とクラスの関係の特徴だ。
っていうかごちゃごちゃも何も、原則同じ物だからさ。
345 :
デフォルトの名無しさん :2005/08/16(火) 21:23:32
言語仕様などJAVAやC#も極めた俺は関係ない。ちなみにアセンブラも神域。 C++はいい言語だ。
C−ガール」 (浅香 唯)
C (ミポリン)
上級者が集まるスレであって 年寄りが集まるスレではないんだがな
上級者でつか?どこが?プ
ここが、に決まってるじゃん。 こんな簡単な文章の流れも読めない奴って・・・。
>>349 まあ、お前より>346や>347の方が上級者であることは確かだな。
そろそろ目ぇ真っ赤にしながらの釣り宣言が来ます
ぬるぽ!
上級者でつか?なにが?プ プ
じゃあ上級者にふさわしい話題提供してよ
>>356 そろそろインポリタンスを治す薬について議論しましょうか
参照とポインタの使い分けについて述べてみよ。
ポインタでなければならない積極的な理由がない限り、参照。
逆だろ! 参照でなければならない積極的な理由がない限り、ポインタ。
>>360 ヌルチェック、もしくはヌルチェックが必要かどうかのチェックがウザイ。
ナルこそC++の極みなり。
こんなおとぼけさん。居るよね? if (obj != NULL) delete obj;
俺は参照でできる箇所はすべて参照。 俺のソースにポインタが出てきたら、それは「そうしなければいけない理由がある」という 明確な意思のこもった記述だな。 あと、NULLなんてC++のソースコードに一度も書いたことがないや。
ポインタにしなければいけないのはどんな場合?
NULLチェックが必要なとき。
new 演算子を使うとき。
CのAPIを使う 変更可能な外部コレクション …
>>366 boost::optional<T&>
引数が変更されるときはポインタを使いたい istream の get(char&) みたいのはあんま好きじゃない…
なんか引数を書き換えるときにはポインタ派って多いよな。
私はグローバル変数派です 最強です
書き換えるといこそ参照だと思うがなぁ。 へんなアドレスに書き込んでデータ壊す確率が下がる。
やっぱりグローバル変数+goto文が最強だよね。
そもそもクラスなんていらないよね。
Cタスタスは最良?
( ´艸`) Cクスクス
379 :
デフォルトの名無しさん :2005/08/20(土) 15:37:55
>360 ポインタで作ったつもりでも、いつのまにか=使った時点で参照 やらかしてるだろw
なんで、int &a = b; って書くと参照なんだ? aのアドレスを取るとそれがint型?・・・ワケわからん
∩___∩ | ノ ヽ / ● ● | | ( _●_) ミ Cクマクマー 彡、 |∪| 、`\ / __ ヽノ /´> ) (___) / (_/ | / | /\ \ | / ) ) ∪ ( \ \_)
不覚にもこんなつまらないネタでワロタ
>>371 そうでないと関数呼び出してる箇所みても引数が変更されるってのが読み取りにくい
俺ルールでも基本的に非constな参照の引数は禁止。
例外はiostreamくらいか
389 :
デフォルトの名無しさん :2005/08/27(土) 22:40:30
ルールの話じゃねーよ馬鹿
言い返せないから嘲笑でごまかしてみました。
やはりここにも C++ の上級者は居ないようだな。
>>393 上級者同士が会話するスレだからね。
お前が何を書いても、レスしてくれるのはお前と同レベルの俺みたいな奴だけだよw
C++上級者って何が出来るの?
まずboost::lambdaをバンバン使っているに違いない。
C++上級者はアセンブラも出来ますか?
アセンブラも出来ないし、他人の作ったライブラリを使えるだけ。 それがC++上級者なのですか?
もしかしてコンパイラも作れない?
教えればすぐ使えるだろうけど。
>>399 「他人の作ったライブラリを使える」ってのは重要だよ。
403 :
デフォルトの名無しさん :2005/08/31(水) 01:04:28
C++上級者にふさわしい高級な煽りを希望する
405 :
デフォルトの名無しさん :2005/08/31(水) 01:28:00
>>404 例えてあげる、私が NULL なら
あなたは std::numeric_limits<long long>::min() ってところね。
C++でNULLは如何なものかと。
nullキーワードはどうなりましたかの? > JTC1/SC22/WG21
それは知らんが、C++/CLIのnullptrキーワードはヌルポインタにも使えるようだ。
>>405 お前がNULLなら、俺はガッだ。
というのは勘違い
411 :
デフォルトの名無しさん :2005/08/31(水) 13:10:36
>>407 NULLの代わりとかあるの?
それはVisualC++7.1で使える?
>>411 0をポインタにstatic_castしたら、NULLポインタになる。
もちろんそのポインタを整数型にreinterpret_castしても0になるとは限らない。
結局な〜んも作れないのがC++上級者でつね。
ヤケ気味に上級者を煽れた時代が俺にもあった。 そこに自分も含まれるようになった今は、 もう憎々しげに上級者を煽る意味がなくなってしまったけど。
ハイハイ
下級な人は煽りの切れ味も下級だね。
正直C++上級者がこんなスレに来るとは思えないのだが… 上級者ならさらりと使いこなすC++のテクって何? 多重継承?仮想継承?メンバ変数・関数のポインタ? テンプレート?
>>418 俺はその中ではテンプレートを1番良く使っている。
当然だがほかのも使わないわけではない。
もちろん俺が上級者である保証は何処にもない。
>>418 Gap Buffer Algorithm.
>>418 > 上級者ならさらりと使いこなすC++のテクって何?
> 多重継承?仮想継承?メンバ変数・関数のポインタ?テンプレート?
それはテクニックなのか?
うちに面接に来るのはコピーコンストラクタ、代入演算子の定義も書けない人ばかり
いくらなんでも「ばかり」ってのはネタだろう。
そりゃそうだろうけど相当多いんだろうくらいに呼んでやろうよ。
2ちゃんねるってこんな突っ込み入れる奴ばかり
>>423 おぉ!Gap Buffer Algorithm
伝説のテクを使える者がおったとは。これは驚きじゃ。
>>430 gap_vector だね。知ってるよ。
Gap Buffer など、C++上級者なら当然知ってるよ!
ちゅうことで、結局な〜んも作れないのが、ここのC++上級者でした。
扇るなら、C++の上級者にふさわしい煽りを。
お〜い扇風機持って来いや
みなさんコンピュータサイエンスをどこで学ばれたのですか?独学ですか?
きらめき高校
ものつくり大学
>>428 そう読んだ上で「そんなに多いってのはネタだろう」と言ってるのだが・・・。
最近色々なブログでやってる 最小なんとか点とかメモとかってこんな感じか? template <class T> class normal { protected: int call_me(int i) const { return static_cast<T const&>(*this)(i); } }; template <class T> class memo { protected: int call_me(int i) const { std::map<int, int>::const_iterator ci = memo_.find(i); return ci == memo_.end() ? memo_[i] = static_cast<T const&>(*this)(i) : ci->second ; } private: mutable std::map<int, int> memo_; };
template <template <class> class Fix> class fib : Fix<fib> { public: int operator () (int i) const { return i <= 1 ? 1 : call_me(i-2) + call_me(i-1); } }; int main() { fib<normal>()(20); fib<memo>()(20); }
>>442 なんか面白そうなコードだね。
親クラスと子クラスを反復する再帰関数なんて初めて見た。
潮騒キボンヌ
いいか、おまいら。 いくらC++を極めても嫁は見つからないんだ。 ただ頭が禿げるだけだ。それを忘れるな。
そういやSE or PGでハゲってみたことないんだが。 実際少ないんかねえ。
スキルの毛の数は反比例する傾向にある。
>>441 どんな流れ?
都合が悪いからありもしない流れをでっちあげたってのは無しね。
髪の毛の流れを読みきった奴が真の勝利者だと思う
量が少ないとバーコードになるから 簡単に流れが読める
>>423 調べてみました。こんなの初めて知りました。おいらは上級者と思っていたのが恥ずかしい...
選ばれた上級者だけがハゲるからな gaped bufferはemacsで使ってたやつだ C++じゃなくても普通に使える
NUEのエディタは(Gapped) Double Linked Line Bufferだった。
456 :
デフォルトの名無しさん :2005/09/03(土) 18:59:31
最近、いい感じに禿げてきた
457 :
442 :2005/09/03(土) 19:28:56
>>444 元ネタは Let's Boost の人のブログ。
再帰関数をメモ化したりする汎用的な仕組み、のような感じか?
フィボナッチ数列みたいに再帰で何度も使う数値をメモしておくってことかな。 一般化したという点で面白いね。
Boost使うヤツは、ヘタレ。 上級者なら、あまりにも高度すぎて自分にしか使用できない 自作ライブラリを使うのが常識だろ?
>>419-423 ありがと。
聞いたこともない用語が出てきたので満足です。
C++を使いこなすことを目標にします
463 :
デフォルトの名無しさん :2005/09/04(日) 22:48:26
こんばんわ、質問があります。 環境C++6.0 windowsxp 今、ハードディスクやCDの容量を調べるプログラムを組んでいます。 GetDiskFreeSpaceExをつかって、ハードディスクの使用量と空き容量は入手できたのですが、 焼かれたCDの空き容量が0になってしまうのです。マイコンピュータのCDドライブのところから、 プロパティを開くと空き容量が表示されるのですが、プログラムでそれを入手することが出来ないのです。 基本的な質問ですが、知恵をお貸し願えませんでしょうか? よろしくお願いします。
>>463 なんでプログラムできない奴って日本語できないんだろ?
つうかスレ違いだろうが
ギッ!
ヌッ!
ぬ ぽ る
つ縦読み
473 :
デフォルトの名無しさん :2005/10/24(月) 10:40:55
小数点2位以下を四捨五入したいのですが、もっともシンプルでかつ高速なコードを教えてください。
>>473 何もしなくても四捨五入して表示されるが
printf("%.2f", 1.235);
あ、C++スレなのに失礼
double round45(double val, int digit) { char buf[20]; sprintf(buf, "%.*f", digit, val); return atof(buf); }
このスレまだあったんだ
>>442-443 これってチョットいじっただけじゃコンパイルとおらない?
typeのミスマッチっていわれるんだけど。
>>479 とりあえず call_me を this->call_me にすれば?
>>480 だめみたい。
thisをつけると、const class fib<normal> has no member named call_meっていわれちゃう。
templateのしたクラスのcall_meを呼んでくれないみたい
>>482 gccでは通らないぽい。どこがおかしいのやら
template <template <class> class Fix> class fib : protected Fix< fib<Fix> > だな。public継承でもいいけど。 要はダウンキャストもprivate継承ではできない
typedef Fix<fib<Fix> > ct; … …ct:call_me(…
COMについての質問はここでいいですか?
488 :
487 :2005/11/06(日) 18:13:45
自己解決しました
489 :
デフォルトの名無しさん :2005/11/07(月) 11:50:43
ポインタの静的型と、仮想関数の振る舞いについて教えてください。 struct A { virtual void f(); }; struct B { virtual void f(); }; struct C: public A, public B {}; C* pc = new C; pc->f(); // (1) A::f() と B::f() のどちらか分からないのでコンパイルエラー A* pa = pc; pa->f(); // (2) A::f() がコールされる B* pb = pc; pb->f(); // (3) B::f() がコールされる struct D: public A, public B { virtual void f(); }; D* pd = new D; pd->f(); // (4) D::f() がコールされる pa = pd; pa->f(); // (5) D::f() がコールされる pb = pd; pb->f(); // (6) D::f() がコールされる struct C の仮想関数テーブルの f() のエントリはどうなっているのでしょう? 派生クラスが仮想関数をオーバライドしない場合、このエントリは基底クラスの 関数ポインタがそのままコピーされると思います。しかし、A::f と B::f のど ちらを採用すべきかコンパイル時に決定できないはずです。 ところが上記(2)のように、動的型が struct C であっても、静的型を struct A とするとコンパイルが通り A::f() がコールされます。動的型の struct C の仮 想関数テーブルの f() のエントリは決定できていないはずなのに、何故 (2)(3) のような呼び分けができるのでしょう? 実際 struct D のように f() をオーバライドすると、静的型に関係なく動的型 の仮想関数がコールされるので、f() のエントリは1つだと思うのですが。 どういうカラクリになっているのでしょう?
>>489 「fのエントリは二つあって、Dでは両方が同じ関数を指している。」という実装しか思いつかないな。
調べてみる。
#include <iostream> #include <cassert> struct A { virtual void f(){ std::cout << "A::f\n";} }; struct B { virtual void f(){ std::cout << "B::f\n";} }; struct C : A, B {}; struct D : A, B { void f(){ std::cout << "D::f\n";} }; int main(void) { C c; D d; A *pca = &c; B *pcb = &c; A *pda = &d; B *pdb = &d; typedef void (*pfun_t)(); pfun_t pcfa = **(pfun_t **)pca; pfun_t pcfb = **(pfun_t **)pcb; pfun_t pdfa = **(pfun_t **)pda; pfun_t pdfb = **(pfun_t **)pdb; pcfa(); pcfb(); pdfa(); pdfb(); assert(pdfa != pdfb); } 結果(g++-mingw): A::f B::f D::f D::f よって、C/D共にfには二つのエントリがあって、 Dの場合は、二つの異なるD::fのラッパが入っていると判る。
492 :
デフォルトの名無しさん :2005/11/09(水) 00:29:56
Pentium4にやさしいプログラミング手法を教えてください
>>492 C++じゃなくてアセンブラになっちゃうけど消費電力を抑える為に halt や nop を多用するのがいいと思うよ。
494 :
デフォルトの名無しさん :2005/11/09(水) 04:40:12
__asmでnopを入れればいいのですか?
>>494 アホを真に受けるなよw
ったく知ったかぶり君は迷惑だよね。
>>495 もし
>>493 を知ったかぶりと思っているなら
お前の日本語読解力の方がずっとアホだと思うよ。
>>492 ifは極力使わない。
forをつかえ。
for(int i = 0; condition && i < 1; ++i){ ..... }
BOOLよりboolを使ったほうが処理速度が速くなるっていうのは本当ですか?
いいえ、それだけの情報ではなんともいえません。
BOOL(4バイト)とbool(1バイト)のことです
うがー、それだけの情報ではなんともいえません。
環境によって違うということですか? vc7.1でコンパイルしたんですが win2000です
>>499 >>503 BOOLかboolかで速さが違うかどうかはわからないが、
BOOLはintのtypedefで、boolはC++組み込み型だからbool(true/false)を使う方がよい。
なるほど、そうなのですか ありがとうございました
BOOL は真偽値じゃない とりあえずMSDN行って GetMessage()の戻り値見てくれば解る あんな代物とbool型を同一視したら相当痛いミスを連発することになる。 MSのAPIの引数と戻り値以外には使わないほうが良い。 さらにsizeof(bool)は1と決まっているわけじゃない。 コンパイラによってはsizeof(bool)==4の場合もある。
ただ、現実問題として、boolは0/1しか取らないから 整数型やポインタ型の値をboolに代入しようとすると、若干の演算が必要になる。 例えば、戻り値が0か0以外かが判定できれば良いだけの場合でも int型の関数だと return n; で足りるところを bool型の関数にすると return n != 0; に相当するコードが必要になる。 そのため、VC++では最適化の警告が出せるようになっている。
>>501 普通、bool はintと同じサイズ( =BOOLと同じサイズ )になるぞ。
「普通」の意味がわからんが、BCB6ではintが4でboolが1だな。
>>509 アレ? borland でもデフォルトでは bool は int と同じサイズだったと思うが・・・
bool を1バイトにするっていうコンパイルオプションが指定されてない?
boolを使うと、ビットセット系のニモニックが生成されて分岐が省略できる可能性もある。 >507が指摘したケースだと、どうせ呼び出し側でも判断が入るから二重ロジックに成るかも知れんが、 inline関数なら逆に呼び出し側を巻き込んで最適化されるから同じことだね。
っていうかboolの実装って普通0か1のどちらかっていう判断してる? 俺は0(false)か、0以外の全て(true)のどちらかっていう判断だと思った。 void Hoge(bool hoge) { if (hoge == true) {} } みたいな時、hoge != false(0) としてのコードを吐くのが普通じゃないの? だからこそ我々はC時代のように "BOOLVAR == TRUEと書いてはいけない。BOOLVAR != FALSEと書け" みたいなルールに縛られず boolvar == true っていうコードも合法になるもんだと思ってたんだけど。
>>507 > ただ、現実問題として、boolは0/1しか取らないから
trueかfalseです。!に対してそれぞれが逆元。
integral promotionがあるとそれぞれ1と0になる。
ちなみにここは上級者スレです。
>>512 >boolvar == true っていうコードも合法になるもんだと思ってたんだけど。
合法ですが、間抜けです。
>>514 Microsoft Specific
In Visual C++4.2, the Standard C++ header files contained a typedef
that equated bool with int. In Visual C++ 5.0 and later, bool is implemented
as a built-in type with a size of 1 byte. That means that for Visual C++ 4.2,
a call of sizeof(bool) yields 4, while in Visual C++ 5.0 and later,
the same call yields 1. This can cause memory corruption problems
if you have defined structure members of type bool in Visual C++ 4.2
and are mixing object files (OBJ) and/or DLLs built with the 4.2 and 5.0 or
later compilers.
ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vclang/html/_langref_bool.asp
>>514 最近は sizeof(bool)==1 が主流なのか。知らなかったお。(^ω^)
>それと、bool より BOOL を(パフォーマンスの理由で)
>推奨してる環境もあるにはある。個人的には嫌だけど。
それもちょっと微妙だね。sizeof(bool)==1 な処理系ならCPUが苦手な
バイトアクセスでもメモリアクセス量が減る bool のほうが多分トータルの
パフォーマンスでは上だろうし。
>>517 まあ、CPUが苦手どころか 4 バイト未満の整数型をダイレクトに
扱う命令を持ってないからで。しかも無駄なメモリアクセスは極力
省いてキャッシュレイテンシまで時に考えなきゃならんような環境の
ことなんで、無視していいかと。
つうか、素直に sizeof(bool)==4 にしろよ、ってスマン愚痴だ。
vector<bool>なんてのを想定したんじゃない? > sizeof → 1 bitsetってのもまあ微妙なアレだし
メモリが遅いって話ならそれこそ最大限コンパクトにして キャッシュに乗ってる可能性を高くしたほうがいいじゃん
vector<bool> は特殊化されているので関係ない
522 :
デフォルトの名無しさん :2006/01/22(日) 14:12:46
o(%)。 // ○(%)oジュワッ
523 :
デフォルトの名無しさん :2006/02/08(水) 11:15:21
上級者の会話か?
>>523 上級者が集まったからと言って上級な会話をするとは限りませんし、
上級者にしかその真意がわからない上級な会話なのかもしれません。
526 :
デフォルトの名無しさん :2006/04/28(金) 09:41:06
上級者はいなくなったようですね
527 :
デフォルトの名無しさん :2006/04/28(金) 11:12:31
上級者というからにはもっとこうOS技術とか、デッドロックの事例とその解決とかについて 議論するのではないのか?
>>527 デッドロック回避にはオーストリッチアルゴリズム。マジお勧め。
レース状態やスタベーションについての議論もしよう。
レース下着でマスターベーションについて
OS 技術が上級? 酔ってるから超ウケた。 上級な OS 技術と、当たり前すぎてあほらしい OS 技術があると思うのだが。
533 :
デフォルトの名無しさん :2006/04/29(土) 06:06:22
酔ってるな
>>527 それはあえて言うなら「プログラミング上級者」とかの類であって「C++上級者」とはズレがあるのでは?
535 :
デフォルトの名無しさん :2006/04/30(日) 02:32:53
ではC++上級者は何ができるのですか?
Cでも書けるコード/アルゴリズムを 「C++らしく」書くことが出来ます。たぶん。 俺は上級者じゃないので無理です。
上級者 初級者でもわかるコードを書く 初級者 上級者でもわからないコードを書く
ここは「上級者とは何か」を議論するスレですか?
自らの上級しゃっぷりをアピールするスレです。
初心者が微妙にスレ自体をひがんでるな そんな暇があったら勉強しなよ
541 :
デフォルトの名無しさん :2006/04/30(日) 11:47:14
542 :
デフォルトの名無しさん :2006/04/30(日) 19:51:31
自称上級者の集まるスレってここでしょうか?
そうですね、例えばあなたとか…
俺、俺だよ俺!
545 :
デフォルトの名無しさん :2006/05/06(土) 20:23:30
pngのCRCの計算をするコードを教えてください。
546 :
デフォルトの名無しさん :2006/05/06(土) 20:27:47
>>546 わかりませんので
上級者の知恵をお借りしに来たのです。
>547 ここは上級者以外立入禁止だ。
俺は上級者だが、わからないものはわからないのだ。
551 :
デフォルトの名無しさん :2006/05/06(土) 21:31:30
ここは自称上級者同士が褒め称えあうスレです。
552 :
545 :2006/05/06(土) 21:37:24
googleで探したらあったYO
これで君も上級者だ。
555 :
デフォルトの名無しさん :2006/05/07(日) 20:31:55
クックック。遂に極めたぞ。
残念ながら555が居たのは、まだ入り口だったのであった
極めたってどういう状態を指すんだ?DQN臭い。
>>557 きっと typedef あたりの使い方を極めたんだよ。
555の痛さはネタ臭いけど、 極めるという言葉に過剰反応している557の痛さは素っぽいな。
562 :
デフォルトの名無しさん :2006/06/02(金) 08:40:30
皆さんのタブのサイズを教えてください
TABは0.5を利用
タブは8
565 :
神楽坂 :2006/06/02(金) 15:17:23
フィルタドライバの作り方で 聞きたいことがあるんで 来てみたのだが...... だめみたいだな、 ここは。
ここはスレタイが荒してくれといっているようなものだからな。 隔離スレというか。
いかにも荒らし本人が書きそうな「見限りレス」だな。
>>565 なんのフィルタドライバを作りたいのかぐらい書けよ。
つーか、お前は本当は聞きたいことの説明すらできんのだろ?
素直んなれよ、な?
569 :
デフォルトの名無しさん :2006/06/03(土) 13:28:56
気付いたけどここには低能しかいないようだな
超上級者だったらもうちょいゆとりがあっただろう
>>568 ・訊いても無駄だといいながら訊きたい内容を書く
・でもその内容は不明確なまま
・しかもスレ違いの予感
・つか、なにしろコテハン
恐らく、自分よりバカ (に見える連中) がいて
嬉しかったんだろう。
ここは、C++上級者が集まるスレであって
>>565 ごときが来るような場所ではない。
まぁ、能無しが「おもらい」しに来るスレではないよな。
盛り上がって参りました!
マ板でもっとも典型的なネタスレのひとつ
コメントを // にしました。 これで俺も上級者の仲間入り。
赤飯炊かなきゃな
579 :
デフォルトの名無しさん :2006/07/07(金) 15:55:26
上級者さんのお知恵をお借りしたいのですが。。 C++とDirectShowでビデオキャプチャ+圧縮保存のコードを書いております。 ボタンクリック時に、圧縮に使用するコーディックのプロパティ画面を開くようにしたいのですが、方法が検討つきません。 WindowsMediaVideo9とMEPG4 ご存知の方、いらっしゃいましたらご助力願います。 宜しくお願い致します。
582 :
デフォルトの名無しさん :2006/09/04(月) 19:57:52
C++のホットなネタは?
584 :
デフォルトの名無しさん :2006/10/14(土) 01:28:04
stdioとcstdioの違いを教えてください
>>584 cstdio がライブラリを std 名前空間内に宣言。
stdio.h は、↑に加えてグローバル名前空間にも宣言。
っていう建前だけど、実際は
stdio.h がライブラリをグローバル名前空間内に宣言。
cstdio は、↑に加えて std 名前空間にも宣言。
とかいう実装もよくある。
std 名前空間
まあ、プリプロセッサマクロに名前空間は適用できないしな
たまに見かけるstudio.hもよくわからん
ワロタ
あやまれ!スタジオ派にあやまれ!
591 :
デフォルトの名無しさん :2006/10/26(木) 16:03:30
Cωってどうなっちゃったの?
592 :
デフォルトの名無しさん :2006/10/28(土) 01:49:55
class ClassA{ public: ClassA(){・・・・;} ClassA(ClassB a){・・・・;} friend ClassA operator●(const ClassA& x, const ClassA& y){・・・・;} } class ClassB{ public: operator ClassA(){return ・・・・;} } で引数x,yにClassB型の値が代入された場合、x,yはClassAのコンストラクタによってClassA型に 変換されるのでしょうか? それともClassBの変換関数によってClassA型に変換されるのでしょうか?
>>592 規格上はどうなってんのか知らんが、とりあえずコンパイラによっては
「どっち使ってええのかわからん」とエラーを出すのは確か。
594 :
デフォルトの名無しさん :2006/12/15(金) 19:46:02
xmlを処理できるライブラリを教えてください
上級者の質問ではないだろ。 とりあえずXercesとかMSXMLとか。詳しくは知らない。
動的な次元の配列のライブラリってないもんか
それは静的だ。 動的次元配列は自分で作るしかないんじゃね?
gccとFedora core5でプログラムを作成しています。 ofstreamでflush()を使っても、実行されたタイミングでファイルが更新されません。 一定以上になるまで、システムのバッファ内に溜め込まれているようなのですが、 flush()実行時に確実にファイルに書き込ませるにはどうしたらよいでしょうか?
「STLによるコンポーネントデザイン」にvectorを使った2次元・3次元配列クラスの作り方書いてあった それとも次元が動的に増減するの? そりゃちょっとお手上げ
>>599 flushでフラッシュされないのって、C++標準の方法ではどうしようもないような。
クローズしてみるとか(かなりいい加減)
あと、内部的にメモリマッピングしてるような気もする。
特殊なストレージデバイスを使ってない限り、 カーネルのin-coreイメージと外部デバイスの不一致は観測不能なんだが。
606 :
デフォルトの名無しさん :2007/01/06(土) 02:30:56
それは遥か昔にストラウストラップと袂を分かった、 彼の頭頂の毛が喋ってるんだよ。
608 :
デフォルトの名無しさん :2007/01/08(月) 12:26:22
【ネガティブ派遣根性チェック】 3つ以上、思い当たる点があればアナタの性格はひん曲がっており、ネガティブ負け組人生を歩んでいます。 □偽装派遣先の社員の意見にはたとえ間違っていても反対しない □偽装派遣先から「いつまでもここで仕事してくださいね」と言われるようになりたい □自社に仕事を持ち帰れるように言われるとムカつく □自社で仕事なんてできるわけがない □派遣/受託の差異を指摘する人間はムカつく □偽装派遣先には仕事だけでなく自分のプライベートについても指示して欲しい □自分の月額金額を知らない □偽装派遣先社員より自分の生涯収入が低いのは当然だ □偽装派遣先に尻尾を振り、いつまでも一緒に仕事をすることが大切だ □今のプロジェクトが終わっても同じ偽装派遣先に常駐したい
構造化して細かく関数毎に分けた方が、構造化されていないプログラムより最適化されやすいですか? それとも関数の呼び出しのオーバーヘッド分だけ遅くなりますか?
>>609 最適化については、コンパイラ (とコンパイル時のオプション)
に依存するのでなんともいえない。
関数の呼び出しのオーバーヘッドは確実に存在する。
ただ通常それが問題になることはあまり無い。
て言うか、プログラム書くときはわかりやすく書け。
関数呼び出しのオーバーヘッドなんか気にするのは最終手段だ。
「最適化する必要を感じるまで最適化するな」
常に__forceinline
>>609 最近のコンパイラは小さい関数が数百個つらなっても
平気でinline化しやがるので無問題
class A{ const double x; A() : x(10){} } と class A{ static const double x=10; } の使い分けについて教えてください
>>615 前者はインスタンス毎に暮らす変数が作られるのでメモリが余計に
必要だが、コンストラクタ次第ではインスタンス生成時に x の値を
自由に設定できる。
後者はメモリは一つしか使わないので省メモリ型だが、コンパイル時
に値が決定するのでコンストラクタによって値を変える事はできない。
class A{ static const double x; }; const double A::x = 10;
619 :
デフォルトの名無しさん :2007/01/16(火) 16:22:35
上級者の方にお聞きしたい問題があります。 -------------- 【問題】 「計算式対応電卓」 ・計算式を文字列として入力すると、その計算を行い、結果を出力するプログラムを 作成せよ。 -入力文字列を解析し、数値と演算子に分けて計算する。 -例:計算する式を入力してください。終了:end 使用可能演算子:四則演算(+-*/) 1+2 答えは3です。 ・必ず四則演算のほかに、使用可能な演算子を追加せよ。 入力する際の演算子記号は任意にきめてよい。 -例:あまりを求める % 二乗を求める ・繰り返し何度も計算できるようにする。 その際、終了する場合の入力文字列を示せ。 -------------- 初心者ということもあり、わかりません。 ソースファイルとして書き込んでいただきたいです。。
>>619 講義聴いてればちゃんとできるからまた来年やれ
624 :
デフォルトの名無しさん :2007/01/17(水) 00:33:04
若いの オラが村では派遣の問題を口にしちゃなんねーだ お前さんはまだわけぇから言いたいこともあるべぇ だべな、派遣問題を口にするとムキになって怒る者がおるでよぉ 問題の指摘は駄目だっぺぇ 派遣のことは口にしちゃなんねぇ この村みたいな糞田舎で悲惨な生活するためにはよぉ 北朝鮮と一緒でよ、駄目のものを駄目と言ってはなんねえだべさ タブーを口にしちゃいけねぇだ オラ達みたいな田舎者の鉄則だっぺ
627 :
ららら :2007/01/17(水) 19:26:03
class Hoge を Hoge.h で宣言して Hoge.cpp で定義している。 Hoge の実装では Foo クラスを使うのだが、 Foo を使っているということを Hoge.h 側では見せたくない。 今は class Hoge { public: Func1(void); private: Func2(Foo* foo); }; こうなっているのだが、Foo をヘッダーに見せたくない。 Foo を使うコードが Func1 内で完結すれば、見せなくて済むのだけど、 何分 Func1 の処理が長いので、どうしても関数を分割したい。 さて、よい案はないだろうか。。。。 ヘッダー上では Foo* じゃなくて void* にキャストして、 Func2 の実装で void* を Foo* にキャストする、 という方法はあるのだが。汚い。
pimpl
Fooのポインタだけならclass Foo;とだけ書いておけばおk。
上級者の皆様、Haskellで使えるalgebraic data typeをC++で表現するにはどうすればいいでしょうか?教えてください。
>>615 で
class A{
static const int x=10;
}
は許されるのに
class A{
static const double x=10;
}
は禁止されているのは何故なのでしょうか?
配列の要素数など整数定数への需要は大きいから、それだけ特別扱いされた。
class A{ static const double x; }; const double A::x = 10; これでできるのなら、 class A{ static const double x=10; } の様な書き方も許可して良さそうな気がするのですが・・・
class A{ static const double x() const { return double(10); } } で代用できるから特に困らない
C++のクラスの静的メンバ変数は(constの有無に関わらず)、 Cのヘッダに宣言しどこか1箇所ソースで定義する流儀を受け継いでいると考えればそう不自然でない。 納得がいくかどうかはともかく。 そんなにクラス内に書きたければ、静的メンバ関数ならインラインに書けることを使う手もなくはない。
C++ らしいよなぁ。 template もそうなんだけど、なんつーか、 もう少し素直にやりたいことを直感的に書けないものかw
Borlandコンパイラならプロパティ(独自拡張)があるね
そういやtemplateなら
>>618 のようなのを全部ヘッダーに書いてもいいんだっけ?
>>637 Visual C++も独自拡張でプロパティを持っている。COMラッピングに使っている。
>>638 テンプレートでも定義が必要。ただしヘッダに書ける。
template<typename T>
class A{
static const double x;
}
template<typename T>
const double A::x = 10;
たしかこんな感じ。
駄目だから定数を返す関数にする。どうせインライン展開されるし
>631,633 あれ?出来ないんだっけ? gcc3.4.2なら出来たけど。 てか、最近のコンパイラなら出来るはずだと思って フリーで配ってるソースで使いまくっちゃったけど。。。
厳密にはできなくはない __declspecキーワード使うことになるが
規格では整数型のみだけだっけ?
644 :
ららら :2007/01/21(日) 18:58:00
class Foo; class Hoge { public:     Func1(Foo::FooType type); }; class Foo { public:     enum FooType {         TYPE_1, TYPE2, TYPE3     } }; こんなコードが、コンパイルエラーになるのですが、 Foo を先に宣言せずに、Hpge で Foo::FooType を使うことって可能ですか?
それは無理だな
無理だよ
>>644 >Foo を先に宣言
Foo を先に定義、の間違いだな
そんな細かい指摘はともかく、この要求は比較的需要があると思うけれど、
(少なくとも自分はこういうことをしたいときが結構ある)
みんなどう思ってるんだろ
>>647 こういうのがあるから、ネストされた public 型定義は避けたほうがいい。
どうしてもって場合は苦肉の策だけど、Hoge側をクラステンプレートにして しまうのもありかも( Foo をテンプレート引数にする )。
650 :
デフォルトの名無しさん :2007/01/27(土) 23:55:49
vc2005EEを使っているのですが、質問があります。 デバッグモードではCPU使用率が20〜35%に押さえられているのですが、 リリースモードにすると使用率が常時100%に跳ね上がってしまいます。 これの原因分かる方いませんか? もしくは原因究明の方法が分かる方いませんか? (プロファイラは使えません^^) どうかよろしくお願いします。
>>653 あってるかどうかの自信はないが原因やその調査方法や対策等々を多少予想がつかんでもないが、
プロファイラを使えば一発で解決する問題なのに、あえてプロファイラは使えませんと逃げるような
教えて君がくるようなスレではありません、ここは。どっか逝け。
つーかせめてどんなプログラムかぐらい書け。あと、テキトーにプログラムをコメントアウトして
現象が変わったらその部分あるいはその部分に関連したところになんかある。ロクに情報も提供
しない教えて君はたまにはそーゆー地道なデバッグでもやってなさい。
サクセスに振り込んだお金が返ってこない まで読んだ
「まで読んだ」ネタは それを書くより早く読めるレスについてるとなんか痛い
ごめんね母ちゃんはじめて「まで読んだ」したから
>>654 別に逃げているわけでは無く、
もともとVC8EEにはプロファイラがついていないのです。
これを使えば解決することは分かっていたので、あらかじめ注釈させていただきました。
情報が足りなかったことは誤ります。
作っているのは所謂ノベルゲームです。
>>654 にあるようにプログラムを適当にコメントアウトしていったところ、
サウンドを再生する専用のスレッドがネックになっていることが分かりました。
ここでのSleep間隔を0からそれより大きくした結果(現在は5)、
CPU使用率が20%にまで下がりました^^
ちょっと納得できない部分もあるのですが、とりあえず上手く動くようになりました。
どうもありがとうございます^^
> もともとVC8EEにはプロファイラがついていないのです。 もろ逃げじゃんw VC8EEプリインストールモデルなんて聞いたことないしなぁw 学校のPCだけでやってるんだったらもちスレタイ嫁。
>>658 OS上CPU使用率が100%と表示されていても
本当にCPUの演算ユニットを100%ぶんまわしてるわけじゃないから、
Sleepは0でも良い。1あれば十分。5は多すぎ。
>>659 ごめん。
意味が分からない。
>>660 windowsのスレッドシステム(自分は2000使ってます)をよく知らないのですが、
メインの方の処理が軽くなると、
コンテキストスイッチが頻発してCPU使用率が異常に上がるのかなぁ。
実行速度は軽くなっているのに、使用率が上がるということは
無駄な処理がすごく増えたってことですよね。。。
あと、5msのSleepは確かに長すぎるかもしれません。
メインスレッドの方がつまってくると、
音飛ぶ可能性ありますね。
このあたりはもうちょっと調整してみます。
>>661 Waitのない無限ループを持つスレッドがひとつでもあればCPU使用率は100%になる。
そんな当たり前なことも理解できてないようなヤツがいていいスレじゃない。どっか逝け。
>>662 Wait = Sleep(0) という解釈でいいなら、ちゃんと入ってましたよ。
問題は
1, メインスレッド・サウンドスレッドともにちゃんとSleepが入っていた
(メインの方はFPS固定の可変Wait, サウンドの方は常に0)
2, 単純な実行速度はデバッグモード時よりもリリースモード時の方が速かった
3, メインスレッドのWait値もリリースモードの方が大きかった
にも関わらず、デバッグモードではCPU使用率が30〜40%、
リリースモード時は常に100%になっていた点です。
リリースモードではサウンドスレッドが相当無駄なことをしているのは理解できるのですが、
それならデバッグモードではなんで100%にならないのかなと。。。
>>663 そうですね^^
>>663 デュアル/マルチプロセサは無視か?
>>664 > Wait = Sleep(0) という解釈でいいなら、
よくないだろ。
それは、ともかくコードの断片も示せないなら、エスパー希望の広告を
新聞に載せた方が早いので、ここから立ち去ってくれ。
>>664 C++の話題じゃないから、662を読んで分からないなら Windows 板へ池
>>664 処理速度の速いほうがCPU使用率も高くなんのはあたりまえだろ、どっか逝け。
俺も大体そう思うな プロファイラがあってもデバッグ版のCPU使用率が低い理由はわからないと思う。 これに関しては私には判りません。 デバッグモードでは何か特殊な待ちがあるんだろか。 たとえばwaveOutWriteなら複数のバッファを渡せるので 音飛ぶ可能性は著しく低く、 バッファが終わるころにメッセージ通知が来るから それまで何もしないのでCPU使用率を著しく下げることも出来るはず。 ノベルゲームの経験ないから推測だが ノベルゲームで絶えず処理している状況が存在する理由がわからない。
デバッグ版ではシステムコールの呼び出しが 増えてたりするからじゃないのん?
c++のリファクタリングツールは VisualStudioなら ref++ Refactor! Pro emacsで使えるツールはないの?
すみません。これで最後にします。
>>668 サウンドライブラリとして、OpenALを使っているので、
空きバッファがあるかどうか
常に監視する必要があるのです。
確かにwaveOutならその必要はありませんね。
>>669 システムコールかもしれません。
一応テストとして、
・適当な処理+Sleep(0)を繰り返すスレッド
・適当な処理+Sleep(10)を繰り返すスレッド
の二つを作って実行させたのですが
デバッグモード、リリースモードの両方でCPU使用率は100%でした。
(当然か。。。)
件のアプリでは、さらに多くのスレッドといろいろな処理が付加されているので、
どこかになにがしかの待ちが入っているんだと思います。
(共有リソース待ちや、IO待ち?)
感覚としては、スレッド間のリソース待ちが原因では無いかと思いました。
(調べてみるとミキシングスレッドとサウンドデータ供給スレッドが別でした^^)
ちょっとこれ以上は分から無いのですが、
他にやることもあるのでこの件はこれで終わりにしたいと思います。
それでは、スレ汚し失礼しました。
実行中にブレーク掛けてみて、どの処理が走ってるかみてみたら。 何回かやれば時間食ってる部分が解るだろ。
>>674 遅れてすみません。
ブレーク掛けてみたのですが、
意味の分からない結果になりました。
なんか、OpenALのバグのような気がします。。。
原因が分かったら報告します。
ここは上級者が集まるスレです。上級者に質問するスレではありません。
集まって何すんの?
書き込んだり、書き込みを読んだりするに決まってるじゃん。
書き込んだり、書き込みを読んだりして何すんの?
できることとか、やりたいこと。
681 :
デフォルトの名無しさん :2007/03/02(金) 19:46:02
夏時間まで考慮して、タイムゾーンを取得する方法を教えてください。
682 :
デフォルトの名無しさん :2007/03/27(火) 02:43:43
boolは何故1バイトも消費するのですか?
>>682 1バイトとは限らんぞ。処理系依存だ。
VCではint型にダウンキャストされるんじゃなかったっけ?
#かなり昔に仕様書らしきもので読んだ気が。
仮に
>>682 が使用している環境でboolが1バイト使うとして話を進める。
>>682 は1ビットで十分だっていいたいんだろうけど、
メモリの最小管理単位が1バイトだから、最低でも1バイト使わないとだめ。
C言語で言うビットフィールドを使って、ビット単位で管理するのもありだけど
(そうすれば、1バイトで8個のboolを管理できるよな)、それだと管理のための
メモリが必要になるし、速度面で効率的じゃなくなる。
だから、bool型は1ビットじゃないんだ。
もっとも、処理系によってはビット単位で管理してるのもあるかもしれんが。
ダウンキャストっていうのかそれ VC++の最近の実装(っていうかただのtypedef)ではBOOL=charだったような
>>683 今VC++でsizeof(bool)の値を見たら1だった。
俺はbool型変数はクラスメンバぐらいでしか使わないから、
たとえ1ビットだとしてもアラインメントの影響で恩恵にあずかれないな。
vector<bool>とか使うと恩恵があるかも
boolをvectorなんかに入れて一体何に使えというんだ
>684のすべてが意味不明
>>683 速度・効率だけでなく、ビット単位ではポインタとしてメモリアドレスが使えない。
ワードマシンでのchar*みたいにコンパイラが頑張る手もあるが、
bool*だけでなく必然的にvoid*もbool*に合わせなければならず、
void*とbool*だけ他のポインタと異なる大きさになってしまう。
無論規格上は問題ないが、実際問題void*の大きさがほかと異なるなんてやっていられないだろ。
関数へのポインタとデータへのポインタの大きさが違うなんて 昔は当たり前だったから、なんてことない。
>691 boolを1bitにするなら、sizeof(bool)をどうする気?
>>693 それ忘れていたorz
>>684 Windows APIでは、typedef int BOOL; typedef char BOOLEAN;
しかしboolとは関係ない。
> typedef int BOOL; typedef char BOOLEAN; わけわからん >>MS ATL::CComPtr::operator&()もわけわからんかった。 凶悪。
>>695 そこは固定じゃない。
なんのtypedefかはSDKのバージョンによってもしょっちゅう変わる。
まあ固定長ビット配列ならstd::bitsetなんかが一番効率いいかな。
1ワードの中に複数要素が詰め込めると何かと便利。
>>691 void* と char* は同じ内部表現である必要がある。 (ISO C++ 3.9.2.4)
そのほかメモリモデルやオブジェクトモデルの定義からも char より
小さい型は存在し得ないと言える。
BOOL Boolean variable (should be TRUE or FALSE). shouldって便利な言葉だな
>>698 msdn2〜はVS2005のドキュメント
>>701 団子ちゃん、流れとは全然関係ない質問があるんじゃが、
団子ちゃんがC++上級者だと家庭して、団子ちゃんは Boost を
1. あー、ごっつい靴だろ?
2. たまに使う。
3. よく使う。
4. もうあなたなしじゃ生きられないの!
5. あー、アレのほげほげは俺がコントリビュートしてんだよ。
の、どれ?
703 :
702 :2007/03/28(水) 02:39:35
ちなみに俺は、1 だが、それでも自分を C++ 上級者だと思ってる。
2かな ふだんはATL/WTL+STLあと.NET regexとrandom::mt19937rは便利だね あとsandboxにあがってたfixed_arrayが便利だから改造して使ってる
.NEET 使ってんだ。
>697 おいおい。BOOLの実体がint以外だったことがあるってーの? WIN16の頃の話じゃねーだろーな。
>>701 msdn.microsoft.comの時代から698の文書は存在した。
今は英語版のMSDNライブラリオンラインはあちこちmsdn2への転送になっている。
bool型はC++仕様書ではintと同じバイト数。 でも大手の実装するコンパイラは大抵1バイトしか割り当てないのが普通。 さて、酒飲んで寝るか。もう目が覚めませんように。
1に書いてある内容とまるで裏腹なスレの内容 なんて皮肉だ
> 我こそはC++プロフェッショナルだという方の書き込みをお待ちしております。 こんなこと書くから、自分でプロだと「思い込んでる奴」ばっかりになるんだよ。
スレタイに騙されて覗いてみたら期待してたのと違ったんで 怒りに任せて書き込んでみたんでしょう。 スレ勃てから2年半もたってノコノコやってきて今更な事を書く人ってのは そういうもんです。
もうちょっとためてから反復しないとネタとして面白くないです。
特定の部分なら3だが全般的には2だな
全部使ってる奴がいたらそれはそれで気持ち悪いぞ MPLとかSpiritとか、いいかげんにしる
俺4。上級者じゃないけど。MPLとかは流石に可読性的に使えないがな。
MPLとPreprocessorとSpiritとPhoenixとXpressiveと LambdaとuBLASとgraphとfilesystemを全部使うアプリを testでテストするやつこそが4だな。
どういう処理をしようとして全部必要になるんだろうか……
環境非依存で、ミリ秒単位でsleepさせる方法はありませんか?
>>726 ない。
特定のCPU等に依存していいならなんらかの方法があるだろうが、
どのみちほとんどマシン語のコードになる。
729 :
デフォルトの名無しさん :2007/04/04(水) 20:00:16
>>729 注:私の有意義な発言に対し自分の理解不足を棚に上げ煽り、1行レス
で返す方が多いようですが、そのような方はスレの皆様を混乱させるだけでなく
スレの雰囲気を崩しかねないのでお黙り下さい
また質問者は回答者に知識を披露する場を与える貴重な存在なので、
質問者を見下した回答、あまりにも儀礼を欠いた回答も厳重に禁止いたします。
忙しい中、少ない時間の合間を縫って質問しに来てるわけですので、
その辺ご承知下さい。なお、当方が質問に対して有意義な答えであると
判断した方には評価いたしますので各自よく調べ、よく考え正確な回答をするように。
まずい餌だな。3点
729 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん
かといってこんなことに新鮮味を追求されるのもアレだな
737 :
デフォルトの名無しさん :2007/04/10(火) 18:46:19
絶対値を求める関数が他の言語では一つしかないのにCではabsとfabsの二つが存在する理由を教えてください。
その質問をこのスレでする理由を教えてください。
>>737 > 絶対値を求める関数が他の言語では一つしかない
Fortran なんか4個もあるぞ。(w
iabs(整数) => 整数
abs(実数) => 実数
dabs(倍精度) => 倍精度,
cabs(複素数) => 実数
CだってC89の時点でabs(int), labs(long), fabs(double)と3個。 後(C95か?)にfabsf(float), fabsl(long double)が加わり5個。 C99ではllabs(long long), imaxabs(intmax_t), cabs(double complex), cabsf(float complex), cabsl(long double complex)と10個。 勿論C++では、(C++にある型なら)absで多重定義がなされている。
ここまでの話を総合すると、rubyが一番スマートだな。
>>741 というと ruby は絶対値をマイナス値で返す nabs 一個のみとかそんな感じ?
オーバーロードしてるから見た目上一個やん
>>743 マイナスの最大値でオーバーフローするものしかないってこと?
# 戻り値が unsigned なら大丈夫だけど。
直観が「突っ込み所だ」と告げたはいいが、スレタイがスレタイだけに 具体的に突っ込んでボロ出す羽目になったらどうしようってのがちょっぴり不安で、 結果こんな感じに落ち着きました、という感じのレスだな。
たとえば負数が1の補数な処理系では、 INT_MINを放り込んでも、オーバーフローしないよ。
そうだね。帰っていいよ。
馬鹿じゃないの?
泣くなよ
754 :
デフォルトの名無しさん :2007/05/18(金) 18:12:10
float x=10.0; で exp(x) とすると、expはfloat型に対応した関数が呼び出されますが、 exp(10.0) とした場合、double型に対応した関数が呼び出されると考えてよいのでしょうか?
ワラタ
>>754 そうだよ
ちなみにexp(10.0f)とすればfloat版を選べる
まさかとは思ったが ここも隔離スレだったか
>>757 全然そんなことないから、ここから出て行かないでね♪
>>21 いまさらながら
const string 上級者="俺";
のが上級者っぽいな。
class 上級者; typedef 俺 上級者;
>>760 #define 上級者 ナルシスト
をお忘れですよ。
762 :
デフォルトの名無しさん :2007/07/05(木) 17:48:21
大抵のコンパイラでC99はスイッチをつけないとコンパイルできないのは何故?
C++のコンパイラ? C99がC++に取り込まれるのはC++0x(たぶん09)からだよ。
764 :
デフォルトの名無しさん :2007/07/05(木) 20:03:32
C++かアセンブリ言語どっちが難しいですか?
C++
アセンブリは面倒なだけで難しいのとはまた違う 技術書を読む大変さはあるけどなー
マクロアセンブラならまあいける 本当にただのニーモニック→機械語変換だとアドレスの管理を全部自分でやらないといけないから死ねる
それアセンブラって言わないと思うが...
DEBUG.EXEだな あれのアセンブラ機能は貧弱だったな それでもcom形式ぐらいならなんとか書けちゃったりするが
FEDCBA98
771 :
デフォルトの名無しさん :2007/07/11(水) 12:32:08
何の16進かと思ってググったらゲーム改造かよ。 何にしろバイナリ書き換えは趣味の域でなきゃやりたくないな。
C++上級者(笑)
三(笑)
( *´ω`)ムシャムシャ
つi'"':
`、:_i'
| ┌┐
│ ││ ││ 若干食べられてしまったが
| ││ ││
>>772 はC++より安く見えることがわかる
| ││ ││
└────────────
C++上級者(笑)
>>772
774 :
デフォルトの名無しさん :2007/09/24(月) 07:47:59
defineの代わりにconstを使うよう推奨されているのに、コンパイラのソースを見ると 大量にdefineが使われているのはなぜ???
もともとCで書かれていたか、 実はCとしてコンパイルするようになっているか、 書いた人間がconst推奨を知らなかったか。
Cと共用なんだろ。 何を悩む必要がある
>>774 システムのベンダとユーザは事情も、従うべきルールも違う。
システムヘッダの真似してアンダースコアで始まる名前を使うような人大杉。
引数に渡す定数を参照させるだけのために、
オブジェクトのリンクを強要するDLLなんかありえないし、
他の言語とリンクさせるときや、バイナリ互換性が問題なら、
定数の具体的な値をはっきり公開するしかない。
それに、Cでは配列サイズにconst整数を使えない。
constって言ったって、ヘッダで初期化子付きの定義を与えるんだから、 DLLなんて関係ないけど、ほかは合っているや。
>>constって言ったって、ヘッダで初期化子付きの定義を与えるんだから、 プレーンCモードでコンパイルされたときに実体が増殖し放題で リンクエラーになるからDLLベンダがそれをやったら配慮不足だ。 よく分かってないハード屋寄りのユーザとかが目を回すからな。 このスレ的にはC++コンパイラだとそれができるっていうのは大事だけどな。
ぷ
const だと余計にメモリ消費するからヤなんじゃないの?
staticにすらば、アドレス参照とかしなければ実体は取り除かれるんじゃないの? コンパイラの能力にによるだろうけど
>>783 C++ では const つけた名前空間スコープのオブジェクトはデフォルトで
内部リンケージになる。 static は要らない。
static const volatile unsigned long long int X; は意味無しか
786 :
デフォルトの名無しさん :2007/11/01(木) 04:00:31
インテルコンパイラでループをSSEで計算させようとしているのですが、 コンパイル時に loop was not vectorized: dereference too complex というレポートを返してきます。 これは具体的にはどのような問題があるといっているのでしょうか?
787 :
デフォルトの名無しさん :2007/11/01(木) 17:32:37
>>786 そのままじゃね?
逆参照が複雑過ぎてベクトル化出来なかったお
意味は、その箇所にSSE使えなかったと
ポインタポインタポインタ使ったとか間接的なイテレータ使ったとか?コード見てないからなんとも言えないけど。インテルコンパイラ使ったことないし。
インテルコンパイラとgccだとやっぱり最適化はインテルの方が上?
上。特に、オブジェクト間最適化は凄い。
790 :
デフォルトの名無しさん :2008/02/24(日) 17:30:31
オブジェクト間最適化って何?
リンクの段階で最適化かけるんじゃないの
それならVC8も負けてないぜ。 リンク時間の長さがそれを証明してくれている。
pgi使え
書籍スレは相変わらず 自尊心に能力が追いついていかない子の溜まり場なんだな・・・。
796 :
デフォルトの名無しさん :2008/08/01(金) 10:58:08
×書籍スレ ○プログラム板
797 :
デフォルトの名無しさん :2008/08/01(金) 12:51:00
>>791 リンカー無しじゃなかったか?
確かGCCのリンカーで代用するようになってた気がするぞ。
798 :
デフォルトの名無しさん :2008/08/31(日) 13:12:08
int main(void){ return 0; } のreturn 0の0ってどこで使われるの? シェルから読めるの?
通常、読めます。bsh系なら$0、csh系なら$statusかな。
MS-DOS、WindowsコンソールアプリならErrorLevel
WindowsのGUIアプリだと確か捨てられるんだよな
>>801 それでも欲しければ、GetExitCodeProcess
俺上級者。なんでも聞いて。
質問: gccなら一応これでやりたいことが出来るんだが #include <iostream> #include <typeinfo> template <typename X> struct wrap { X val; wrap(const X x=X()) : val(x) {} }; template <typename X> wrap<X> make_wrap(const X &x) { return wrap<X>(x);} template <typename X> void print_typeid(const wrap<X> &x, const char *name) { std::cout << "typeid(" << name << ")=" << typeid(X).name() << std::endl; } template <typename X, typename Y> struct operator_lshift { typedef typeof(X()<<Y()) result_type; }; template <typename X, typename Y> wrap<typename operator_lshift<X,Y>::result_type> //wrap<typeof(X()<<Y())> // gcc 3.4.4でinternal error operator <<(const wrap<X> &x, const wrap<Y> &y) { return make_wrap(x.val<<y.val); } int main() { wrap<short> s; wrap<long> l; wrap<int> i; print_typeid(s, "s"); print_typeid(i, "i"); print_typeid(l, "i"); print_typeid(s<<i, "s<<i"); print_typeid(l<<i, "l<<i"); }
質問1) typeidが使えない標準環境はどうすればいい? 質問2) operator_lshift構造体を介さずに直接書くと gcc 3.4.4でinternal errorが出るのだが これは誰が悪い? 質問3) operator<< だけでなく、たくさんの演算子(>>,&,|,+,-など)について 結果の型をテンプレートパラメータ typename Xとtypename Yから 導出したいんだが、もっと楽な方法はない?
すまん、質問を訂正 (誤)typeidが使えない標準環境はどうすればいい? (正)typeofが使えない標準環境はどうすればいい?
804は、XとYにデフォルトコンストラクタが定義されていないとコンパイルできないので修正 template <typename X, typename Y> struct operator_lshift { typedef typeof((*(X*)0)<<(*(Y*)0)) result_type; }; gccならこれでOKっぽい
自分で評価しろ、ボケ
上級者なのにそんなこともできねのかよw
811 :
デフォルトの名無しさん :2008/10/13(月) 19:43:52
| 三_二 / ト⊥-((`⌒)、_i | | 〉―_,. -‐='\ '‐<'´\/´、ヲ _/、 | |,.ノ_, '´,.-ニ三-_\ヽ 川 〉レ'>/ ノ 〈´//´| `'t-t_ゥ=、i |:: :::,.-‐'''ノヘ| . r´`ヽ / `"""`j/ | |くゞ'フ/i/ . |〈:ヽ, Y ::::: ,. ┴:〉: |/ できない事に何か問題でもあるのか? . \ヾ( l ヾ::::ノ |、 j .>,、l _,-ニ-ニ、, |)) ! >ニ<:| 、;;;;;;;;;;;;;,. /| ___,. -、 | | !、 .| | ( ヽ-ゝ _i,.>-t--、 ヽ| | ヽ\ _,..:::::::. / .| `''''フく _,. -ゝ┴-r-、 ..|.| | :::::ヽ<::::::::::::::::>゛ |_ _,.-''"´ / ̄,./´ ゝ_'ヲ ..| | | _;;;;;;;_ ̄ ̄ |  ̄ ̄ / _,. く / ゝ_/ ̄| :.ヽ‐'''!-‐''"´::::::::::::::::: ̄ ̄`~''‐-、_ / にニ'/,.、-t‐┴―'''''ヽ \_:::::::::::::::::::::::::::::::::::::::::::::::::::::::\ / / .(_ヽ-'__,.⊥--t-⊥,,_ \  ̄\―-- 、 _::::::::::::::::::::__::/ / /  ̄ ) ノ__'-ノ \ \::::::::::::::`''‐--‐''´::::::::::/ / / / ̄ rt‐ラ' ̄ ̄ヽヽ ヽ ヽ\ \:::::::::::::::::::::::::::::::::::::/ / ゝニ--‐、‐ | l ヽヽ \:::::::::::::::::::::::::::::::/ /‐<_ ヽ |ヽ
上級者は実生活で十分に自尊心が満たされていて、 ネットで名無しに褒めてもらう必要なんかまったく無いから、 頭の悪い人が悔し紛れに挑発なんかしても動いちゃくれないんだよね。
上級者が唸るようなトピックを持って来てくれ
814 :
デフォルトの名無しさん :2008/10/14(火) 18:45:28
>>808 何故、今頃?っていう感じですかねぇ。
私が勤務している某光学機器メーカーでは
15年前にこの手のエンジン開発は出つくして
しまっている。
>>814 基本技術は色褪せることなく必ず必要になる。だからこういう書物は必要なのだ、
>>815 必要なのは同意だが、もっと早い時期に出版されていても
良かったはず。
この手の技術の需要はかなり昔からあったと思うが・・・
新しいC++の仕様とか扱ってる書籍って お勧めありますか?
821 :
デフォルトの名無しさん :2008/12/15(月) 01:03:55
>>820 ありがとう.型推論とか導入予定なのか....wktkすぐる
822 :
デフォルトの名無しさん :2008/12/15(月) 02:11:37 BE:762753773-2BP(22)
823 :
デフォルトの名無しさん :2008/12/15(月) 18:25:19
結局おまえらDcinsideの奴ら同類か
反日韓国人、反日中国人、嫌韓厨&嫌中厨、は同レベルだよ、昔から。 日本文化に興味のある外国人の数は、言うまでもなく中韓文化へのそれよりずっと多いのだけど、 その人達が、日本への興味ゆえに「嫌韓厨&嫌中厨の行動だけ」見つけることが結構あって、 「なぜこの日本人達はこんなに差別的で、韓国や中国を中傷するのか?」とか言ってたりする。 こっちは当然、韓国や中国の反日教育・活動の存在を、慣れない英語で説明するわけだけど、 いくら説明したところで、目の前の嫌韓厨&嫌中厨は明らかに「反論」ではなく「中傷」「攻撃」をしてるわけで、 ちゃんと説明できてようやく「同レベル」というところまで持って行けるだけなんだよね。 ただ興奮したいだけの嫌韓厨&嫌中厨は、この「味方から失っていく」怖さがわかってない。
さすが、C++の上級者は言うことがちがう
>>825 目の前の嫌韓厨&嫌中厨は明らかに「反論」ではなく「中傷」「攻撃」をしてるわけで、
被害妄想乙
結局おまいらModernC++は理解しているのか? しているならの有用性を400文字以内で教えてくれ!
830 :
デフォルトの名無しさん :2009/01/15(木) 21:21:44
さすがの俺も830はおかしいと思う
まさか4文字で教えるとは
833 :
デフォルトの名無しさん :2009/01/16(金) 20:03:14
400文字というのがNUL文字含むかどうか悩む
NUL文字って何?
>>836 まさかとは思うけど、
「NULLの書き間違いだろ?」と書いてるつもりなの?
本当に初心者?
妖怪ぬるりひょんの仕業じゃ。くわばらくわばら
>>837 NULってCでの定数じゃねーか
NULL文字だろ?w
>>839 逆だ。NULLはc/c++の定数で、NUL文字はAsciiで規定されている文字コード名だ。
なんか香ばしいのがいるな 839みたいな奴が業界に入ると思うと虫唾が走る
どっちも存在するっていうか NULとnull文字じゃ少し意味が違う
なんかずっと初心者スレよりしょぼい話題を繰り返してるなおまえらwwwwwwww
まあ、そうだな。
それをやさしく受け止めるのが上級者のたしなみ
じゃあ初心者っぽいネタで上げてみるか 上級者の皆方相手をしてくれ if(int a=func(),b=a*i){} while(int a=func(),b=a*i){} for(int a=0;int b=a/func();int c=d){} とか static union { int a; struct { int b,c; } } とか class Child:Parent { public: using Parent::Method;//プライベート継承 }; とか使ってる奴いる?(グローバル変数になるので真ん中の static無名共同体に関しては使うことはまず無いとは思うが)
>>847 コード並べて
>とか使ってる奴いる?
で他人に通じるとでも思っているのか。
最初のは、if/while/for の内部で変数宣言してるのがポイントなのか?
・内部の宣言は等号と間違えることがあるからあまり使ってない。せいぜいcast系ぐらいかね。 ・クラス内クラスはアクセス管理に便利。重宝してます。 ・プライベート継承よりも包含&インライン関数の方が良いと思う。
>>849 局所変数はしょっちゅう使う。特に for。
コンパイルできないのがあるじゃん
>>850 インナークラスは使うけど無名構造体や無名共同体ってどうよ?
>プライベート継承よりも包含&インライン関数の方が良いと思う。
なじぇに?
>>851 forはよく見るけど別のってあまり見なくない?
個人的に
>>847 に書かれている機能を使っているのコードを
ほとんど見たことが無い。自分では便利だから割と使うんだけどね。
あとC++って他にメンバー変数へのポインタなんてマイナーな機能が
あるけどアレに関しては見たことも使ったこともないわ。
>>853 >メンバー変数へのポインタ
C だと offsetof を使う場面。
複数のメンバ変数に値を突っ込むのに
ループを廻したいときとか、
取り得る範囲が決まっている値から
呼び出すメンバ関数を変えるとか。
>プライベート継承よりも包含&インライン関数の方が良いと思う。 ○汎用性が高い - 同じ名前で一部だけ流用とかも簡単 - 名前の変更も問題なし - NVIにするのも簡単 ○余計な関数を導入するリスクが少ない Traitsにするのならちゃんと切り離した方が良いと思う。 ×オブジェクトがちょっと大きくなる(pimplにしてもポインタ分余計になる) ×コードが面倒 といったところかね。 >forはよく見るけど別のってあまり見なくない? だからdynamic_castとかでは普通に使うって。MC++Dで紹介されてるよ。
>>855 ゴメンifに関しては使うわ。でも他人が
使っているのを見ることがほとんど無いのよ。
継承に関してはなるほどね。
でも、その用途だったら初めからプライベート継承要らなくない?
実際プライベート継承が有用な時はthisを渡してオーバーライド
を使うときや、templateでのシグニチャの移譲用だと思うけど。
857 :
855 :2009/01/24(土) 02:25:07
どっかで見たと思ったら、C++狂 Sutter & AlexandrescuのC++ Coding Standardsに概要あったわ。 ○呼び出し側コードに影響を与えず、柔軟性に富む ○コンパイル時の独立性が高く、コンパイル時間も短い ○予期しない振る舞いを抑制する ○適用範囲がより広い ○優れた強固さと安全性 ○複雑性と脆弱性がより小さい 非public継承を使うのは ・仮想関数をオーバーライドする必要がある ・protectedメンバーへのアクセスが必要 ・メンバー変数よりも前に生成&後に破壊 ・仮想基本クラスに配慮する必要がある ・空の基本クラスの最適化 ・制御されたポリモーフィズムが必要 ぐらいだって。
自分の場合、最もprivate継承を使う機会はboost::noncopyableを使うときだな。
859 :
デフォルトの名無しさん :2009/01/24(土) 13:37:51
C++の上級者はWindows GUIアプリケーションの開発でMFCを使いますか?
GUIは、C♯.NETで作って、C++で速度を求める部分をDLLとして作ってC♯から呼び出す。
861 :
デフォルトの名無しさん :2009/01/24(土) 14:13:31
C++/CLIでWPF
C++&wxWidgets
Qt !
そういうことを決めるのは上級者ではないことが多いと思う。 ともかく案件による。配布の問題もあるし。
>>866 さみしいからて出張してくんなよ、素にもどれ
スレ違いじゃないからいいじゃない。あっちは誰も相手にしてくれんのよ。 けっこう適当に作ってるので、変な落とし穴にはまってないかけっこう不安なんだよね。
なんで反応が無いんだろうねぇ。 こういうの好きそうな人っていそうだけどね。 みんな今忙しいのかな。 ちなみに俺はそういうのは Excel とかで管理するから興味ない。 バリデータ書くにも楽だし。
Excel(笑)
マルチメソッドという便利ツール。実行時にオブジェクトの種類に応じて実行するメソッドを変更してくれる。 あらかじめ関数オブジェクトを作って登録しておく必要があるのが面倒だけど。 struct TestAnyMethod0 { // transfer member function string operator()(any& arg1) { return MultiMethod::apply<string>(*this, arg1); }; // multi method string operator()(int value) const { return string("int"); }; string operator()(double value) const { return string("double"); }; }; bool m00(MultiMethod::entry<std::string, TestAnyMethod0, boost::any, int>()); bool m01(MultiMethod::entry<std::string, TestAnyMethod0, boost::any, double>()); int main() { TestAnyMethod0 m0; any m(m0); any a(0); BOOST_CHECK_EQUAL(boost::any_cast<std::string>(MultiMethod::apply(m, a)), "int"); a = 0.0; BOOST_CHECK_EQUAL(boost::any_cast<std::string>(MultiMethod::apply(m, a)), "double"); }
873 :
デフォルトの名無しさん :2009/01/24(土) 17:35:03
ただのポリモーフィズムとどう違うの?
あっとこれを忘れてた。 int main() { TestAnyMethod0 m0; any m(m0); any a(0); BOOST_CHECK_EQUAL(m(a), "int"); BOOST_CHECK_EQUAL(boost::any_cast<std::string>(MultiMethod::apply(m, a)), "int"); a = 0.0; BOOST_CHECK_EQUAL(m(a), "double"); BOOST_CHECK_EQUAL(boost::any_cast<std::string>(MultiMethod::apply(m, a)), "double"); }
バグってた…… ×m(a) -> ○m0(a)
>873 普通の多態だと引数の実行時多態ができないけど、これだとできる。 さらに関数オブジェクト自体の多態もできるように作ってみた。
877 :
866 :2009/01/24(土) 17:46:30
boost::anyって、データを処理しようとするとデータの中身が何かを知らないといけないから、 けっこう不便なんだよね。 boost::variantだと(visitorを活用して)中身を知らなくても処理を行えるようにしているので、 これをboost::anyに応用できないか、と思って拵えたのが>866
878 :
866 :2009/01/24(土) 17:48:51
>>878 みんなの現場はそういうの使わしてくれるん?
うちはboostも無理っぽいのだけど
マ板でやれ
最終的にboostを目指すんだ
STLはC++に第三者が追加したものだから、そのSTLなら学習しても 頭髪の心配は不要ですか。
最近は彼もM字後退が著しいからなぁ。
884 :
デフォルトの名無しさん :2009/06/07(日) 16:26:24
sleep(0)って具体的にどのような動作をするのですか?
>>885 と、信じられて使われている間違った方法。
Windows3.1のようなノンプリエンプティブなOSには必須だったけどな
Win32でのSleep(0)ならば
>>885 のとおり。
889 :
デフォルトの名無しさん :2009/06/15(月) 10:52:13
VC++6.0上で、DDKを使ってIDEの情報を取得しようとしてますが、 winnt.hとntddk.hのマクロがコンフリクトしてしまいます。 #ifndefとか#pragma onceを使わないで回避できる方法を知っているエラい方いましたら、教えて下さい。
891 :
デフォルトの名無しさん :2009/06/15(月) 10:59:49
>>890 すみません。衝突するマクロやtypedefがいっぱいあるので、
#undefも使わない方法でお願いします。
892 :
デフォルトの名無しさん :2009/06/15(月) 11:01:02
ソースを分ける。
893 :
デフォルトの名無しさん :2009/06/15(月) 11:06:29
>>892 分割は考えてみました。
必要な部分だけ切り取ってローカルでインクルードを試みましたが、
あまりにも数が多すぎて、途中で断念しました。
甘い考えですが、簡単に回避できる方法って無いですか?
894 :
デフォルトの名無しさん :2009/06/15(月) 11:10:55
>>893 ソースのほうを、それぞれのヘッダファイルを使う部分で分けた?
それしかないでしょ。
895 :
デフォルトの名無しさん :2009/06/15(月) 11:45:49
>>894 使う部分で分けたのですが、ntddk.hの中でインクルードしているヘッダでも
衝突したりしているので、手間がかなりかかってました。
分割する方法しかなさそうですね。。。orz
ありがとうございました。
自動焼人 ★ = 自動保守 ◆KAWORUKOFI = 自動保守#K9K?_D[L
名言集 その2
『お前が規制系キャップ取れるか審査してやるよ』
http://yutori7.2ch.net/test/read.cgi/news4vip/1249830540/ ID:PVAf+dux0 = 自動焼人 ★
> 36 :以下、名無しにかわりましてVIPがお送りします [sage] :2009/08/10(月) 00:31:30.02 ID:PVAf+dux0
>
>>33 > キャップとコテハンの違いは何?
> 46 :以下、名無しにかわりましてVIPがお送りします [sage] :2009/08/10(月) 00:38:05.34 ID:PVAf+dux0
>
>>45 > その回答では落ちるなw
> 答えは教えないがw
> 50 :以下、名無しにかわりましてVIPがお送りします [sage] :2009/08/10(月) 00:41:29.96 ID:PVAf+dux0
> Q.キャップとコテハンの違いは何?
> A.2ちゃんねるのボランティアの登録制度
> それがお前の答えかw
> 52 :以下、名無しにかわりましてVIPがお送りします [sage] :2009/08/10(月) 00:43:10.06 ID:PVAf+dux0
> まぁ、どうせ正解が出るわけもないし、次の問題。
> 君が思う面白いスレはどんなの?
----------------------------------------------
この自動焼人 ★メールマガジンの配信停止をご希望される方は
http://qb5.2ch.net/test/read.cgi/sec2chd/1250169591/ にて自動焼人 ★までご連絡ください
やあ自称上級者の皆さん
やぁこんばんわ
かそっています
そうだね糞コテが消えたら過疎じゃなくなるよね
901 :
デフォルトの名無しさん :2009/09/23(水) 19:46:42
かそりすぎです
902 :
デフォルトの名無しさん :2009/09/30(水) 02:49:16
Intel iccで、ベクトル化しやすいコードの書き方を教えてください。 コンパイル時のレポートを見て、ベクトル化されなかった行を書き替えること によって、ベクトル化できるようにしているのですが、 長い数式を2つ3つに分けたり、書き順を変えたりすると、ベクトル化されたりするのですが、 ベクトル化される、されないの条件がいまいちわかりません。
iccは様々な状況においてベクトル化を施してくれる優秀なコンパイラだが それ故どんな状況においてベクトル化を施してくれるかは多様化し過ぎていて把握できんのだ。
碌な上級者が居ませんね
碌マンは名作
906 :
デフォルトの名無しさん :2009/11/10(火) 07:27:46
クラステンプレートを使うとき、ヘッダファイルに本体まで書かなきゃいけない糞仕様を何とかしてくれ
907 :
デフォルトの名無しさん :2009/11/10(火) 13:27:13
>>906 ソースファイルに本体書いてヘッダファイルに include すればいいじゃん。」
>906 Comeau C++ で export 使ってください。
909 :
デフォルトの名無しさん :2009/12/12(土) 18:53:43
ここは上級者隔離スレですか?
910 :
デフォルトの名無しさん :2009/12/18(金) 18:29:40
荒らしの掃き溜めスレでマルチを華麗に無視するなんて格好いい!
動的削除子ってshared_ptrのやつ?
struct HolderBase { virtual ~HolderBase() {} virtual void destroy() = 0; }; template<typename T, typename D> struct Holder: HolderBase { T *p; D deletor; virtual void destroy() { deletor(p); } }; template<typename T> struct Ptr { Holder *holder; template<typename D> Ptr(P *p, D d): holder(new Holder<T, D>{p,d}) {} ~Ptr() { holder->destroy(); delete holder; } }; 上級者スレだからこれでいいよね
訂正 Holder *holder; → HolderBase *holder;
さすが上級
更に訂正 template<typename D> Ptr(P *p, D d): holder(new Holder<T, D>{p,d}) {} → template<typename U, typename D> Ptr(U *p, D d): holder(new Holder<U, D>{p,d}) {}
正規表現エンジン作ったことある?
おーとまとんうんこ
>918 PEGの方が簡単なのでお勧め。
>913 boost::anyの方が参考になる。こっちの方が簡単な実装だし。
>>910 型消去 (Type Erasure)を使って、deleteの委譲を隠蔽するように実装しているんだよ。
C++ってほんとにごちゃごちゃしてるな
C からの派生である以上、全権をプログラマに委任する姿勢も 受け継がざるを得ないからなあ。
そこでobjective-cの出番
使う人によって ごちゃごちゃしたり すっきりしたり するのであれば それは欠陥と言って良い
ごちゃごちゃした書き方する奴が出てこない言語は存在しないから、 これはもう、言語というものがごちゃごちゃしてるということだ。
その反論は予想してた どんなスマートな言語でも ごちゃごちゃ書こうと思えば書ける しかし下手な人がなんとなく書いても ごちゃごちゃになる可能性が低い方が 良い言語だと思う
それは、良さ=無能への優しさ、という考えの場合だね。 そういう言語は引き替えに、有能な人間のパフォーマンスと、出来上がるブツのパフォーマンスを 犠牲にしていることが多い。何というか日本社会的な「良さ」だよね。
>有能な人間のパフォーマンスと、出来上がるブツのパフォーマンスを犠牲にしていることが多い そう思うのは君の勝手だが そんな君がかわいそうだと思った
> そんな君がかわいそうだと思った うん、結果の出せない人や、根拠を言えないのに自信だけある人には よく哀れまれたり見下されたりする。
人間の思考というものが本来混沌としているので、言語が論理的で簡潔になるほど 人間にとっては非直感的になるか、言語の表現力が制限される場合が多い。
みんなC++の本質はboost::labmdaにあると思ってるよね?
タイプミスった。lambda
lambada
spiritだろJK
ネタだろうが変態ライブラリあげんな滓 MPLとFusionに決まってる
いいえ、preprocessorです。
noncopyableだろ。
どう考えてもcompressed_pairしかない
makeしたら負け
ここまでprogress_displayタンの自演
_____ |reject| . ̄.|| ̄ オワタ┗(^o^ )┓三 ←progress_display || ┏┗ 三  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
こんなのって定義できなかったっけ? template<class T> class H { template<int function(const T&)>static void F(const T& d); }
template<class T> class H { template<int function(const T&)>static void F(const T& d); } を.cppに定義するとしたら template<class T> template<int function(const T&)> static void H::F<T>(const T& d){...} だっけ?
コンパイルしてみれば良いじゃん。
次スレもC++上級者の特徴について語り合うよ
マ板でやれカス共
951 :
デフォルトの名無しさん :2010/01/30(土) 06:43:14
#ifdefでWindowsの32ビット版と64ビット版とLinuxの32ビット版と64ビット版で 場合分けをしたいのですが、どのように書けばよいのでしょうか?
953 :
デフォルトの名無しさん :2010/03/05(金) 12:57:39
碌な上級者が居ませんね
954 :
デフォルトの名無しさん :2010/03/09(火) 16:10:56
Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following: The copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor.
0% 10 20 30 40 50 60 70 80 90 100% |----|----|----|----|----|----|----|----|----|----| ******************************************************************
956 :
デフォルトの名無しさん :2010/03/19(金) 16:42:11
makefileでintel compilerがなかったらgccを使うというような設定はできないものだろうか?
設定も何もそう書けばいいだけのことだろ? which icc > /dev/null && icc ... || gcc ...
autoconfしろよ
std::transformにメンバ関数を渡したい std::vector<CFoo*> vf,vf2; CFoo* CFoo::MemFunc(CFoo* foo) { return NULL;} std::transform(vf.begin(),vf.end(),vf2.begin(),std::mem_fun(&CFoo::MemFunc)); これじゃな何でなのかしらん?
>>959 引数 foo はどこから出てくるの?
vf2 の要素数は大丈夫?
>>960 transformが*(vf.begin()+i)を渡ししてくれると思っています。そもそもそこが間違い?
vf2の要素は呼び出す前にvf2.reserve(vf.size());しています。
>>961 非 static メンバ関数は暗黙の第一引数として CFoo* this がついてる。
つまり渡してる関数オブジェクトは CFoo* this, CFoo* foo の2つ引数が要ることになる。
vf2 の要素数を確保するには reserve() じゃなくて resize() しないとダメ。
ただしどうしても reserve() にしたいなら transform() に std::back_inserter(vf2) を
渡すことで同様の結果は得られる。
あの〜、動作云々ではなく、コンパイルが通らないという話なんですが・・・
>>962 だから、関数オブジェクトの引数の数が足りないからだろ。
そもそもコンパイルが通らないことを相談したいんならエラーメッセージぐらい貼れよ。
>>964 C++上級者のすれでは?
上級者なら、エラーメッセージなんてなくともコードを見れば、そのエラーメッセージ位
分かるのでは?
>>965 引数の数が足りないって分かって指摘してくれてるじゃないか。何が不満なの?
上級者が集まってるわけはないんですねw
>>968 素晴らしい!
いままで誰も知らなかった、そんな難しいことを簡単に発見するなんて!
是非とも学会で発表すべきだ!
970 :
デフォルトの名無しさん :2010/05/29(土) 06:11:35
getloadavgでCPU使用率の平均値を取得できますが、 コマンド発行時点のCPU使用率を取得する方法を教えてください。
971 :
デフォルトの名無しさん :2010/06/01(火) 23:03:50
1 :名無しさん@どっと混む:2009/12/14(月) 20:45:15 ID:unnBMLw10
高根社長のSM趣味サイトMaskRと
副業のSMクラブ銀座プレジス・動画配信専門リアルミストレスばかり語られるが
高根社長の本業コムラッドについても語ろう
銀座プレジス
http://www.prezis.jp/top.htm MaskR
http://maskr.com/ プレジスを語ろう
http://set.bbspink.com/test/read.cgi/sm/1246009466/ 動画配信専門リアルミストレスってどうよ?
http://set.bbspink.com/test/read.cgi/sm/1249183350/ 9 :名無しさん@どっと混む:2010/01/03(日) 18:27:00 ID:RSEbBiG0O
高値はもう大麻やめたの?
10 :名無しさん@どっと混む:2010/01/04(月) 05:15:29 ID:A3l1qdv+O
タカネ社長ってどうやってばれないように脱税してんだろ?
億単位で脱税して億ション暮らしなんて凄いよな
監査役の奥さんもグルなのか?
12 :名無しさん@どっと混む:2010/01/05(火) 01:47:06 ID:KAHwqMrBO
株式会社Comrade株式会社コムラッド株式会社Comrade株式会社コムラッド株式会社Comrade株式会社コムラッド株式会社Comrade株式会社コムラッド株式会社Comrade
株式会社Comrade株式会社コムラッド株式会社Comrade株式会社コムラッド株式会社Comrade株式会社コムラッド株式会社Comrade株式会社コムラッド株式会社Comrade
13 :名無しさん@どっと混む:2010/01/05(火) 01:47:47 ID:KAHwqMrBO
高根英哉高根英哉高根英哉高根英哉高根英哉高根英哉高根英哉高根英哉高根英哉高根英哉高根英哉高根英哉高根英哉高根英哉高根英哉高根英哉高根英哉高根英哉
972 :
デフォルトの名無しさん :2010/06/01(火) 23:04:40
18 :名無しさん@どっと混む:2010/01/07(木) 09:26:06 ID:5NL2jyJpO
高根はMASKRでレイプ仲間募集するのやめたんだね
mixiで募集中か
21 :名無しさん@どっと混む:2010/01/10(日) 19:36:45 ID:FdRwgXUTO
風俗店やってるってことは高根社長は暴力団と繋がってるんだね
どこの組にいくらみかじめ料払ってるんだかw
23 :名無しさん@どっと混む:2010/01/23(土) 03:43:12 ID:Pdcv8aq0O
タカネ社長未成年に酒飲ませてレイプ
24 :名無しさん@どっと混む:2010/01/29(金) 18:16:06 ID:zMwtdkIsO
高根社長のレイプ趣味は病気だから治らない
25 :名無しさん@どっと混む:2010/02/01(月) 01:39:32 ID:uaH5mo2nO
前科者
26 :名無しさん@どっと混む:2010/02/09(火) 00:52:46 ID:JwGmN2cG0
>>25 容疑はレイプ?買春?管理売春?公然猥褻?薬物?脱税?詐欺?傷害?
28 :名無しさん@どっと混む:2010/02/14(日) 22:56:30 ID:lykq8x1VO
どこかのスレで人を死に追いやったと書いてあった
33 :名無しさん@どっと混む:2010/03/04(木) 12:49:19 ID:J8YxaRGO0
金がないって脱税がばれて追徴課税でも来たか?
せっかく脱税の隠れ蓑にプレジス営業してるのに残念だったなw
38 :名無しさん@どっと混む:2010/03/12(金) 21:09:53 ID:L0W4+sivO
首吊り首絞めプレイ大好き高根英哉
973 :
デフォルトの名無しさん :2010/06/01(火) 23:05:23
53 :名無しさん@どっと混む:2010/05/17(月) 13:14:06 ID:E/7OZVtz0
>>18 高根英哉blogでレイプ仲間募集中
私とともにマスクの女どもを弄ぶ仲間を募集する
急に思いついたら連絡をして、集まれるような仲間だ
だから、複数名募集するし、いついつという日時があるわけでもない
条件は以下のとおりだ
・SMを実践している、または興味がある
・マスクを用意できる
・都内でイベント参加できる
・イベント内容およびこの仲間を通じて知りえた情報を口外しない
・成人男子である
・携帯電話および携帯メールアドレスを私に公開できる
・酒が好きである
希望者は私宛にメールを送ってほしい
全員が参加できるわけでもないので、こちらの選択に任せてもらう
なるべく想いを書いてもらうほうがわかりやすいし
経験や顔写真も歓迎。
r
[email protected] [email protected] [email protected]
勿論上級者はTMPコードバリバリ書くんだろ?
975 :
デフォルトの名無しさん :2010/09/05(日) 19:43:47
ここにおいでの皆さんはやっぱり、 コンソールから修行したの?
コンソールしかなかった
コンソールすらなかった
なあ……forループ終了後にループ変数のスコープが保証されないのは仕様だよな。 例えばchar型で255までループしたとき、抜けた後は256になるのが妥当だろうけど、 charは256になれないもんな。 0だろ?
意味不明
>>978 for(ここ)で定義した変数のスコープは、現在では for() {ここ}です。
だから、外側では破壊されています。
ただし昔のVC++なんかは、ここfor() {} なので、外でも参照できます。
VC++の場合は、標準の動作にするかどうかはコンパイルスイッチで制御できます。
変数の加算結果はこれとはまた別の話だ。
981 :
デフォルトの名無しさん :2010/09/06(月) 12:13:13
>>978 まずお前のchar型はなんbitなのかと問いたい、問い詰めたい、小一時間(ry
いや待て、char が符号無し整数の処理系かも知れないぞ
そもそも、forループの継続条件で255までと言うのが無理がある。do-whileなら兎も角。
なるほどこれが上級者の話題か。
985 :
デフォルトの名無しさん :
2010/09/07(火) 13:15:39 境界問題をこそ上級