05/08/20 08:55:54
>>366
boost::optional<T&>
370:デフォルトの名無しさん
05/08/20 12:28:10
引数が変更されるときはポインタを使いたい
istream の get(char&) みたいのはあんま好きじゃない…
371:デフォルトの名無しさん
05/08/20 13:15:22
なんか引数を書き換えるときにはポインタ派って多いよな。
372:デフォルトの名無しさん
05/08/20 13:27:46
私はグローバル変数派です
最強です
373:デフォルトの名無しさん
05/08/20 13:28:02
書き換えるといこそ参照だと思うがなぁ。
へんなアドレスに書き込んでデータ壊す確率が下がる。
374:デフォルトの名無しさん
05/08/20 13:36:51
やっぱりグローバル変数+goto文が最強だよね。
375:デフォルトの名無しさん
05/08/20 13:38:28
そもそもクラスなんていらないよね。
376:デフォルトの名無しさん
05/08/20 13:44:52
>>374
最強 != 最良
377:デフォルトの名無しさん
05/08/20 13:56:04
Cタスタスは最良?
378:デフォルトの名無しさん
05/08/20 14:56:03
( ´艸`) Cクスクス
379:デフォルトの名無しさん
05/08/20 15:37:55
>360
ポインタで作ったつもりでも、いつのまにか=使った時点で参照
やらかしてるだろw
380:デフォルトの名無しさん
05/08/20 16:18:46
なんで、int &a = b; って書くと参照なんだ?
aのアドレスを取るとそれがint型?・・・ワケわからん
381:デフォルトの名無しさん
05/08/20 16:32:57
>>380
こちらへどうぞ
スレリンク(tech板)l50
382:デフォルトの名無しさん
05/08/20 17:20:58
>>379
Cタヌタヌ。うんにゃ。んなことない。
383:デフォルトの名無しさん
05/08/20 23:13:40
∩___∩
| ノ ヽ
/ ● ● |
| ( _●_) ミ Cクマクマー
彡、 |∪| 、`\
/ __ ヽノ /´> )
(___) / (_/
| /
| /\ \
| / ) )
∪ ( \
\_)
384:>>383
05/08/21 21:00:27
不覚にもこんなつまらないネタでワロタ
385:デフォルトの名無しさん
05/08/27 15:38:44
>>371
そうでないと関数呼び出してる箇所みても引数が変更されるってのが読み取りにくい
386:デフォルトの名無しさん
05/08/27 18:59:17
俺ルールでも基本的に非constな参照の引数は禁止。
387:デフォルトの名無しさん
05/08/27 19:21:33
例外はiostreamくらいか
388:デフォルトの名無しさん
05/08/27 21:31:34
>>385
そのルールは、もう過去のもの。
389:デフォルトの名無しさん
05/08/27 22:40:30
ルールの話じゃねーよ馬鹿
390:デフォルトの名無しさん
05/08/27 23:05:38
「So, you want to prefer pointers to references?」
URLリンク(www.allankelly.net)
391:デフォルトの名無しさん
05/08/28 17:41:05
>>389
ルールだよ。ププ
392:デフォルトの名無しさん
05/08/28 19:06:40
言い返せないから嘲笑でごまかしてみました。
393:デフォルトの名無しさん
05/08/28 19:44:08
やはりここにも C++ の上級者は居ないようだな。
394:デフォルトの名無しさん
05/08/28 22:12:38
>>393
上級者同士が会話するスレだからね。
お前が何を書いても、レスしてくれるのはお前と同レベルの俺みたいな奴だけだよw
395:デフォルトの名無しさん
05/08/31 00:21:53
C++上級者って何が出来るの?
396:デフォルトの名無しさん
05/08/31 00:24:17
まずboost::lambdaをバンバン使っているに違いない。
397:デフォルトの名無しさん
05/08/31 00:31:28
C++上級者はアセンブラも出来ますか?
398:デフォルトの名無しさん
05/08/31 00:33:14
>>397
出来るとは限らないのではないか?
399:デフォルトの名無しさん
05/08/31 00:42:27
アセンブラも出来ないし、他人の作ったライブラリを使えるだけ。
それがC++上級者なのですか?
400:デフォルトの名無しさん
05/08/31 00:43:50
もしかしてコンパイラも作れない?
401:デフォルトの名無しさん
05/08/31 00:45:25
教えればすぐ使えるだろうけど。
402:デフォルトの名無しさん
05/08/31 00:56:12
>>399
「他人の作ったライブラリを使える」ってのは重要だよ。
403:デフォルトの名無しさん
05/08/31 01:04:28
>>397>>399>>400ってすごい馬鹿そう
404:デフォルトの名無しさん
05/08/31 01:15:38
C++上級者にふさわしい高級な煽りを希望する
405:デフォルトの名無しさん
05/08/31 01:28:00
>>404
例えてあげる、私が NULL なら
あなたは std::numeric_limits<long long>::min() ってところね。
406:デフォルトの名無しさん
05/08/31 07:32:34
C++でNULLは如何なものかと。
407:デフォルトの名無しさん
05/08/31 08:55:36
nullキーワードはどうなりましたかの? > JTC1/SC22/WG21
408:デフォルトの名無しさん
05/08/31 09:03:41
それは知らんが、C++/CLIのnullptrキーワードはヌルポインタにも使えるようだ。
409:デフォルトの名無しさん
05/08/31 12:40:18
>>405
お前がNULLなら、俺はガッだ。
というのは勘違い
410:デフォルトの名無しさん
05/08/31 13:04:56
>>407-408
URLリンク(open-std.org)
411:デフォルトの名無しさん
05/08/31 13:10:36
>>407
NULLの代わりとかあるの?
それはVisualC++7.1で使える?
412:デフォルトの名無しさん
05/08/31 21:17:05
>>411
0をポインタにstatic_castしたら、NULLポインタになる。
もちろんそのポインタを整数型にreinterpret_castしても0になるとは限らない。
413:デフォルトの名無しさん
05/08/31 22:21:26
>>411
0
414:デフォルトの名無しさん
05/09/01 00:49:14
結局な~んも作れないのがC++上級者でつね。
415:デフォルトの名無しさん
05/09/01 01:08:15
ヤケ気味に上級者を煽れた時代が俺にもあった。
そこに自分も含まれるようになった今は、
もう憎々しげに上級者を煽る意味がなくなってしまったけど。
416:デフォルトの名無しさん
05/09/01 01:12:12
ハイハイ
417:デフォルトの名無しさん
05/09/01 04:08:19
下級な人は煽りの切れ味も下級だね。
418:C++入門者
05/09/01 23:04:59
正直C++上級者がこんなスレに来るとは思えないのだが…
上級者ならさらりと使いこなすC++のテクって何?
多重継承?仮想継承?メンバ変数・関数のポインタ?
テンプレート?
419:デフォルトの名無しさん
05/09/01 23:22:26
>>418
俺はその中ではテンプレートを1番良く使っている。
当然だがほかのも使わないわけではない。
もちろん俺が上級者である保証は何処にもない。
420:デフォルトの名無しさん
05/09/02 00:49:15
>>418
コルーチン
421:デフォルトの名無しさん
05/09/02 00:51:49
>>418
delegate
422:デフォルトの名無しさん
05/09/02 00:52:38
>>418
自己書き換え
423:デフォルトの名無しさん
05/09/02 00:54:35
>>418
Gap Buffer Algorithm.
424:デフォルトの名無しさん
05/09/02 01:07:45
>>418
ハァ?
425:デフォルトの名無しさん
05/09/02 09:13:34
>>418
> 上級者ならさらりと使いこなすC++のテクって何?
> 多重継承?仮想継承?メンバ変数・関数のポインタ?テンプレート?
それはテクニックなのか?
426:デフォルトの名無しさん
05/09/02 10:40:37
うちに面接に来るのはコピーコンストラクタ、代入演算子の定義も書けない人ばかり
427:デフォルトの名無しさん
05/09/02 19:37:30
いくらなんでも「ばかり」ってのはネタだろう。
428:デフォルトの名無しさん
05/09/02 19:59:25
そりゃそうだろうけど相当多いんだろうくらいに呼んでやろうよ。
429:デフォルトの名無しさん
05/09/02 19:59:38
2ちゃんねるってこんな突っ込み入れる奴ばかり
430:デフォルトの名無しさん
05/09/02 21:25:54
>>423
おぉ!Gap Buffer Algorithm
伝説のテクを使える者がおったとは。これは驚きじゃ。
431:デフォルトの名無しさん
05/09/02 21:33:32
>>420
コルーチンとは粋だね。
432:デフォルトの名無しさん
05/09/02 21:43:13
>>430
gap_vector だね。知ってるよ。
433:デフォルトの名無しさん
05/09/02 22:16:47
Gap Buffer など、C++上級者なら当然知ってるよ!
434:デフォルトの名無しさん
05/09/02 22:41:25
ちゅうことで、結局な~んも作れないのが、ここのC++上級者でした。
435:デフォルトの名無しさん
05/09/02 22:58:45
扇るなら、C++の上級者にふさわしい煽りを。
436:デフォルトの名無しさん
05/09/02 23:02:37
お~い扇風機持って来いや
437:デフォルトの名無しさん
05/09/02 23:07:34
みなさんコンピュータサイエンスをどこで学ばれたのですか?独学ですか?
438:デフォルトの名無しさん
05/09/02 23:19:02
きらめき高校
439:デフォルトの名無しさん
05/09/02 23:34:53
ものつくり大学
440:デフォルトの名無しさん
05/09/03 00:28:51
>>428
そう読んだ上で「そんなに多いってのはネタだろう」と言ってるのだが・・・。
441:デフォルトの名無しさん
05/09/03 00:33:06
>>440
流れを読め
442:デフォルトの名無しさん
05/09/03 00:38:36
最近色々なブログでやってる
最小なんとか点とかメモとかってこんな感じか?
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_;
};
443:デフォルトの名無しさん
05/09/03 00:39:08
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);
}
444:デフォルトの名無しさん
05/09/03 01:52:01
>>442
なんか面白そうなコードだね。
親クラスと子クラスを反復する再帰関数なんて初めて見た。
潮騒キボンヌ
445:デフォルトの名無しさん
05/09/03 01:58:38
いいか、おまいら。
いくらC++を極めても嫁は見つからないんだ。
ただ頭が禿げるだけだ。それを忘れるな。
446:デフォルトの名無しさん
05/09/03 02:01:06
そういやSE or PGでハゲってみたことないんだが。
実際少ないんかねえ。
447:デフォルトの名無しさん
05/09/03 02:13:33
スキルの毛の数は反比例する傾向にある。
448:デフォルトの名無しさん
05/09/03 03:21:43
>>441
どんな流れ?
都合が悪いからありもしない流れをでっちあげたってのは無しね。
449:デフォルトの名無しさん
05/09/03 03:31:33
髪の毛の流れを読みきった奴が真の勝利者だと思う
450:デフォルトの名無しさん
05/09/03 03:49:03
量が少ないとバーコードになるから
簡単に流れが読める
451:デフォルトの名無しさん
05/09/03 07:27:51
>>423
調べてみました。こんなの初めて知りました。おいらは上級者と思っていたのが恥ずかしい...
452:デフォルトの名無しさん
05/09/03 07:32:57
>>450
君はこちら側の人間ではないようだ。
453:デフォルトの名無しさん
05/09/03 10:00:50
>>452
よう、ハゲチャビン。
454:デフォルトの名無しさん
05/09/03 15:21:32
選ばれた上級者だけがハゲるからな
gaped bufferはemacsで使ってたやつだ
C++じゃなくても普通に使える
455:デフォルトの名無しさん
05/09/03 18:58:25
NUEのエディタは(Gapped) Double Linked Line Bufferだった。
456:デフォルトの名無しさん
05/09/03 18:59:31
最近、いい感じに禿げてきた
457:442
05/09/03 19:28:56
>>444
元ネタは Let's Boost の人のブログ。
再帰関数をメモ化したりする汎用的な仕組み、のような感じか?
458:デフォルトの名無しさん
05/09/03 20:21:51
>>457
さんくす。Boostでしたか。
459:デフォルトの名無しさん
05/09/03 20:33:47
フィボナッチ数列みたいに再帰で何度も使う数値をメモしておくってことかな。
一般化したという点で面白いね。
460:デフォルトの名無しさん
05/09/04 00:12:00
Boost使うヤツは、ヘタレ。
上級者なら、あまりにも高度すぎて自分にしか使用できない
自作ライブラリを使うのが常識だろ?
461:デフォルトの名無しさん
05/09/04 00:42:34
>>419-423
ありがと。
聞いたこともない用語が出てきたので満足です。
C++を使いこなすことを目標にします
462:デフォルトの名無しさん
05/09/04 00:46:55
>>461
おいらを目標に頑張れや。
463:デフォルトの名無しさん
05/09/04 22:48:26
こんばんわ、質問があります。
環境C++6.0 windowsxp
今、ハードディスクやCDの容量を調べるプログラムを組んでいます。
GetDiskFreeSpaceExをつかって、ハードディスクの使用量と空き容量は入手できたのですが、
焼かれたCDの空き容量が0になってしまうのです。マイコンピュータのCDドライブのところから、
プロパティを開くと空き容量が表示されるのですが、プログラムでそれを入手することが出来ないのです。
基本的な質問ですが、知恵をお貸し願えませんでしょうか?
よろしくお願いします。
464:デフォルトの名無しさん
05/09/04 22:53:47
>>463
なんでプログラムできない奴って日本語できないんだろ?
つうかスレ違いだろうが
465:デフォルトの名無しさん
05/09/04 23:44:15
>>410
すげえ。ぬるぽがついにC++にも。
466:デフォルトの名無しさん
05/09/05 00:20:48
>>465
ガッ!
467:デフォルトの名無しさん
05/09/07 00:56:10
ギッ!
468:デフォルトの名無しさん
05/09/07 04:29:54
ヌッ!
469:デフォルトの名無しさん
05/09/07 04:48:36
ぬ
ぽ
る
470:デフォルトの名無しさん
05/09/07 18:17:00
>>469
ガッ
471:デフォルトの名無しさん
05/09/07 22:41:12
>>469は「ぬ ぽ る」な訳だが
472:デフォルトの名無しさん
05/09/08 21:59:53
つ縦読み
473:デフォルトの名無しさん
05/10/24 10:40:55
小数点2位以下を四捨五入したいのですが、もっともシンプルでかつ高速なコードを教えてください。
474:デフォルトの名無しさん
05/10/24 11:22:57
>>473
何もしなくても四捨五入して表示されるが
printf("%.2f", 1.235);
475:デフォルトの名無しさん
05/10/24 11:24:32
あ、C++スレなのに失礼
476:デフォルトの名無しさん
05/10/24 12:33:02
double round45(double val, int digit) {
char buf[20];
sprintf(buf, "%.*f", digit, val);
return atof(buf);
}
477:デフォルトの名無しさん
05/10/24 17:57:54
このスレまだあったんだ
478:デフォルトの名無しさん
05/11/04 15:34:31
【C++】template 統合スレ -- Part6
スレリンク(tech板:1001番)
の後継スレとして使わせて貰うことにしました。
479:デフォルトの名無しさん
05/11/04 18:59:53
>>442-443
これってチョットいじっただけじゃコンパイルとおらない?
typeのミスマッチっていわれるんだけど。
480:デフォルトの名無しさん
05/11/04 19:34:59
>>479
とりあえず call_me を this->call_me にすれば?
481:デフォルトの名無しさん
05/11/04 20:05:54
>>480
だめみたい。
thisをつけると、const class fib<normal> has no member named call_meっていわれちゃう。
templateのしたクラスのcall_meを呼んでくれないみたい
482:デフォルトの名無しさん
05/11/04 21:11:50
>>481
class fib : Fix<fib>
=> class fib : Fix< fib<Fix> >
これで、
URLリンク(www.comeaucomputing.com)
のコンパイラでは通った。
483:デフォルトの名無しさん
05/11/05 07:47:56
>>482
gccでは通らないぽい。どこがおかしいのやら
484:デフォルトの名無しさん
05/11/05 23:54:35
template <template <class> class Fix>
class fib : protected Fix< fib<Fix> >
だな。public継承でもいいけど。
要はダウンキャストもprivate継承ではできない
485:デフォルトの名無しさん
05/11/06 07:39:13
typedef Fix<fib<Fix> > ct;
…
…ct:call_me(…
486:デフォルトの名無しさん
05/11/06 09:47:16
>>484
>>485
サンクス。できました
487:デフォルトの名無しさん
05/11/06 10:38:13
COMについての質問はここでいいですか?
488:487
05/11/06 18:13:45
自己解決しました
489:デフォルトの名無しさん
05/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つだと思うのですが。
どういうカラクリになっているのでしょう?
490:デフォルトの名無しさん
05/11/07 12:12:19
>>489
「fのエントリは二つあって、Dでは両方が同じ関数を指している。」という実装しか思いつかないな。
調べてみる。
491:デフォルトの名無しさん
05/11/07 13:12:52
#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:デフォルトの名無しさん
05/11/09 00:29:56
Pentium4にやさしいプログラミング手法を教えてください
493:デフォルトの名無しさん
05/11/09 03:52:17
>>492
C++じゃなくてアセンブラになっちゃうけど消費電力を抑える為に halt や nop を多用するのがいいと思うよ。
494:デフォルトの名無しさん
05/11/09 04:40:12
__asmでnopを入れればいいのですか?
495:デフォルトの名無しさん
05/11/09 05:17:38
>>494
アホを真に受けるなよw
ったく知ったかぶり君は迷惑だよね。
496:デフォルトの名無しさん
05/11/09 06:54:19
>>495
もし>>493を知ったかぶりと思っているなら
お前の日本語読解力の方がずっとアホだと思うよ。
497:デフォルトの名無しさん
05/11/09 08:19:55
>>492
ifは極力使わない。
forをつかえ。
498:デフォルトの名無しさん
05/11/09 09:21:08
for(int i = 0; condition && i < 1; ++i){
.....
}
499:デフォルトの名無しさん
05/11/10 04:55:32
BOOLよりboolを使ったほうが処理速度が速くなるっていうのは本当ですか?
500:デフォルトの名無しさん
05/11/10 05:05:31
いいえ、それだけの情報ではなんともいえません。
501:デフォルトの名無しさん
05/11/10 05:13:00
BOOL(4バイト)とbool(1バイト)のことです
502:デフォルトの名無しさん
05/11/10 06:30:30
うがー、それだけの情報ではなんともいえません。
503:デフォルトの名無しさん
05/11/10 06:55:30
環境によって違うということですか?
vc7.1でコンパイルしたんですが
win2000です
504:デフォルトの名無しさん
05/11/10 07:51:15
>>499
>>503
BOOLかboolかで速さが違うかどうかはわからないが、
BOOLはintのtypedefで、boolはC++組み込み型だからbool(true/false)を使う方がよい。
505:デフォルトの名無しさん
05/11/10 07:58:03
なるほど、そうなのですか
ありがとうございました
506:デフォルトの名無しさん
05/11/10 08:25:29
BOOL は真偽値じゃない
とりあえずMSDN行って GetMessage()の戻り値見てくれば解る
あんな代物とbool型を同一視したら相当痛いミスを連発することになる。
MSのAPIの引数と戻り値以外には使わないほうが良い。
さらにsizeof(bool)は1と決まっているわけじゃない。
コンパイラによってはsizeof(bool)==4の場合もある。
507:デフォルトの名無しさん
05/11/10 08:51:22
ただ、現実問題として、boolは0/1しか取らないから
整数型やポインタ型の値をboolに代入しようとすると、若干の演算が必要になる。
例えば、戻り値が0か0以外かが判定できれば良いだけの場合でも
int型の関数だと return n; で足りるところを
bool型の関数にすると return n != 0; に相当するコードが必要になる。
そのため、VC++では最適化の警告が出せるようになっている。
508:デフォルトの名無しさん
05/11/10 09:55:29
>>501
普通、bool はintと同じサイズ( =BOOLと同じサイズ )になるぞ。
509:デフォルトの名無しさん
05/11/10 10:05:22
「普通」の意味がわからんが、BCB6ではintが4でboolが1だな。
510:デフォルトの名無しさん
05/11/10 10:18:26
>>509
アレ? borland でもデフォルトでは bool は int と同じサイズだったと思うが・・・
bool を1バイトにするっていうコンパイルオプションが指定されてない?
511:デフォルトの名無しさん
05/11/10 10:28:00
boolを使うと、ビットセット系のニモニックが生成されて分岐が省略できる可能性もある。
>507が指摘したケースだと、どうせ呼び出し側でも判断が入るから二重ロジックに成るかも知れんが、
inline関数なら逆に呼び出し側を巻き込んで最適化されるから同じことだね。
512:デフォルトの名無しさん
05/11/10 10:49:04
っていうかboolの実装って普通0か1のどちらかっていう判断してる?
俺は0(false)か、0以外の全て(true)のどちらかっていう判断だと思った。
void Hoge(bool hoge)
{
if (hoge == true) {}
}
みたいな時、hoge != false(0) としてのコードを吐くのが普通じゃないの?
だからこそ我々はC時代のように
"BOOLVAR == TRUEと書いてはいけない。BOOLVAR != FALSEと書け"
みたいなルールに縛られず boolvar == true っていうコードも合法になるもんだと思ってたんだけど。
513:デフォルトの名無しさん
05/11/10 14:20:37
>>507
> ただ、現実問題として、boolは0/1しか取らないから
trueかfalseです。!に対してそれぞれが逆元。
integral promotionがあるとそれぞれ1と0になる。
ちなみにここは上級者スレです。
514:デフォルトの名無しさん
05/11/10 16:08:18
>>508
実装依存ということは承知してるが、
GCC4 も VC7.1 も sizeof(bool)==1 なわけだが。
こんなのも。
URLリンク(gcc.gnu.org)
それと、bool より BOOL を(パフォーマンスの理由で)
推奨してる環境もあるにはある。個人的には嫌だけど。
515:デフォルトの名無しさん
05/11/10 17:33:35
>>512
>boolvar == true っていうコードも合法になるもんだと思ってたんだけど。
合法ですが、間抜けです。
516:デフォルトの名無しさん
05/11/10 19:57:32
>>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.
URLリンク(www.microsoft.com)
517:デフォルトの名無しさん
05/11/11 00:51:31
>>514
最近は sizeof(bool)==1 が主流なのか。知らなかったお。(^ω^)
>それと、bool より BOOL を(パフォーマンスの理由で)
>推奨してる環境もあるにはある。個人的には嫌だけど。
それもちょっと微妙だね。sizeof(bool)==1 な処理系ならCPUが苦手な
バイトアクセスでもメモリアクセス量が減る bool のほうが多分トータルの
パフォーマンスでは上だろうし。
518:デフォルトの名無しさん
05/11/11 04:24:45
>>517
まあ、CPUが苦手どころか 4 バイト未満の整数型をダイレクトに
扱う命令を持ってないからで。しかも無駄なメモリアクセスは極力
省いてキャッシュレイテンシまで時に考えなきゃならんような環境の
ことなんで、無視していいかと。
つうか、素直に sizeof(bool)==4 にしろよ、ってスマン愚痴だ。
519:デフォルトの名無しさん
05/11/11 07:22:23
vector<bool>なんてのを想定したんじゃない? > sizeof → 1
bitsetってのもまあ微妙なアレだし
520:デフォルトの名無しさん
05/11/11 08:02:00
メモリが遅いって話ならそれこそ最大限コンパクトにして
キャッシュに乗ってる可能性を高くしたほうがいいじゃん
521:デフォルトの名無しさん
05/11/11 08:19:22
vector<bool> は特殊化されているので関係ない
522:デフォルトの名無しさん
06/01/22 14:12:46
o(%)。
//
○(%)oジュワッ
523:デフォルトの名無しさん
06/02/08 11:15:21
上級者の会話か?
524:仕様書無しさん
06/02/08 11:18:47
>>523
(脳内)上級者の集うスレでは?
525:デフォルトの名無しさん
06/02/08 21:49:16
>>523
上級者が集まったからと言って上級な会話をするとは限りませんし、
上級者にしかその真意がわからない上級な会話なのかもしれません。
526:デフォルトの名無しさん
06/04/28 09:41:06
上級者はいなくなったようですね
527:デフォルトの名無しさん
06/04/28 11:12:31
上級者というからにはもっとこうOS技術とか、デッドロックの事例とその解決とかについて
議論するのではないのか?
528:デフォルトの名無しさん
06/04/28 14:47:19
>>527
デッドロック回避にはオーストリッチアルゴリズム。マジお勧め。
529:デフォルトの名無しさん
06/04/28 15:19:59
レース状態やスタベーションについての議論もしよう。
530:デフォルトの名無しさん
06/04/28 16:08:20
>>528 なにもしないってかw
531:デフォルトの名無しさん
06/04/28 17:14:50
レース下着でマスターベーションについて
532:デフォルトの名無しさん
06/04/29 04:44:48
OS 技術が上級?
酔ってるから超ウケた。
上級な OS 技術と、当たり前すぎてあほらしい OS 技術があると思うのだが。
533:デフォルトの名無しさん
06/04/29 06:06:22
酔ってるな
534:デフォルトの名無しさん
06/04/29 15:12:17
>>527
それはあえて言うなら「プログラミング上級者」とかの類であって「C++上級者」とはズレがあるのでは?
535:デフォルトの名無しさん
06/04/30 02:32:53
ではC++上級者は何ができるのですか?
536:デフォルトの名無しさん
06/04/30 02:51:36
Cでも書けるコード/アルゴリズムを
「C++らしく」書くことが出来ます。たぶん。
俺は上級者じゃないので無理です。
537:デフォルトの名無しさん
06/04/30 06:21:32
上級者 初級者でもわかるコードを書く
初級者 上級者でもわからないコードを書く
538:デフォルトの名無しさん
06/04/30 09:48:40
ここは「上級者とは何か」を議論するスレですか?
539:デフォルトの名無しさん
06/04/30 10:28:11
自らの上級しゃっぷりをアピールするスレです。
540:デフォルトの名無しさん
06/04/30 11:13:52
初心者が微妙にスレ自体をひがんでるな
そんな暇があったら勉強しなよ
541:デフォルトの名無しさん
06/04/30 11:47:14
夢の相互リンク
プログラム技術上級スレ
スレリンク(tech板)l50
542:デフォルトの名無しさん
06/04/30 19:51:31
自称上級者の集まるスレってここでしょうか?
543:デフォルトの名無しさん
06/04/30 22:34:38
そうですね、例えばあなたとか…
544:デフォルトの名無しさん
06/04/30 23:35:48
俺、俺だよ俺!
545:デフォルトの名無しさん
06/05/06 20:23:30
pngのCRCの計算をするコードを教えてください。
546:デフォルトの名無しさん
06/05/06 20:27:47
>>545
ソース嫁
547:デフォルトの名無しさん
06/05/06 20:41:34
>>546
わかりませんので
上級者の知恵をお借りしに来たのです。
548:デフォルトの名無しさん
06/05/06 20:46:14
>547
ここは上級者以外立入禁止だ。
549:デフォルトの名無しさん
06/05/06 20:55:00
>>548
わからないくせに偉ぶっている人
550:デフォルトの名無しさん
06/05/06 21:18:22
俺は上級者だが、わからないものはわからないのだ。
551:デフォルトの名無しさん
06/05/06 21:31:30
ここは自称上級者同士が褒め称えあうスレです。
552:545
06/05/06 21:37:24
googleで探したらあったYO
553:デフォルトの名無しさん
06/05/06 21:44:00
これで君も上級者だ。
554:デフォルトの名無しさん
06/05/06 22:01:37
>>545
C++とは関係ない話だろとマジレス。
555:デフォルトの名無しさん
06/05/07 20:31:55
クックック。遂に極めたぞ。
556:デフォルトの名無しさん
06/05/08 00:29:22
残念ながら555が居たのは、まだ入り口だったのであった
557:デフォルトの名無しさん
06/05/08 00:33:38
極めたってどういう状態を指すんだ?DQN臭い。
558:デフォルトの名無しさん
06/05/08 00:51:30
>>557
きっと typedef あたりの使い方を極めたんだよ。
559:デフォルトの名無しさん
06/05/08 00:52:35
>>558
・・・そうか・・・
560:デフォルトの名無しさん
06/05/08 08:08:49
555の痛さはネタ臭いけど、
極めるという言葉に過剰反応している557の痛さは素っぽいな。
561:デフォルトの名無しさん
06/05/08 16:42:06
まぁ真実は>>556が突いている
562:デフォルトの名無しさん
06/06/02 08:40:30
皆さんのタブのサイズを教えてください
563:デフォルトの名無しさん
06/06/02 11:22:42
TABは0.5を利用
564:デフォルトの名無しさん
06/06/02 12:28:03
タブは8
565:神楽坂
06/06/02 15:17:23
フィルタドライバの作り方で
聞きたいことがあるんで
来てみたのだが......
だめみたいだな、
ここは。
566:デフォルトの名無しさん
06/06/02 15:39:01
ここはスレタイが荒してくれといっているようなものだからな。
隔離スレというか。
567:デフォルトの名無しさん
06/06/02 18:28:26
いかにも荒らし本人が書きそうな「見限りレス」だな。
568:デフォルトの名無しさん
06/06/02 22:56:26
>>565
なんのフィルタドライバを作りたいのかぐらい書けよ。
つーか、お前は本当は聞きたいことの説明すらできんのだろ?
素直んなれよ、な?
569:デフォルトの名無しさん
06/06/03 13:28:56
気付いたけどここには低能しかいないようだな
570:デフォルトの名無しさん
06/06/03 13:43:42
>>569
お前と俺と~は~
571:デフォルトの名無しさん
06/06/03 14:20:10
超上級者だったらもうちょいゆとりがあっただろう
572:デフォルトの名無しさん
06/06/03 15:44:22
>>568
・訊いても無駄だといいながら訊きたい内容を書く
・でもその内容は不明確なまま
・しかもスレ違いの予感
・つか、なにしろコテハン
恐らく、自分よりバカ (に見える連中) がいて
嬉しかったんだろう。
573:デフォルトの名無しさん
06/06/03 19:12:18
ここは、C++上級者が集まるスレであって >>565 ごときが来るような場所ではない。
574:デフォルトの名無しさん
06/06/03 19:29:08
まぁ、能無しが「おもらい」しに来るスレではないよな。
575:デフォルトの名無しさん
06/06/03 19:46:15
盛り上がって参りました!
576:デフォルトの名無しさん
06/07/01 05:03:15
マ板でもっとも典型的なネタスレのひとつ
577:デフォルトの名無しさん
06/07/03 22:14:12
コメントを // にしました。
これで俺も上級者の仲間入り。
578:デフォルトの名無しさん
06/07/03 23:08:47
赤飯炊かなきゃな
579:デフォルトの名無しさん
06/07/07 15:55:26
上級者さんのお知恵をお借りしたいのですが。。
C++とDirectShowでビデオキャプチャ+圧縮保存のコードを書いております。
ボタンクリック時に、圧縮に使用するコーディックのプロパティ画面を開くようにしたいのですが、方法が検討つきません。
WindowsMediaVideo9とMEPG4
ご存知の方、いらっしゃいましたらご助力願います。
宜しくお願い致します。
580:デフォルトの名無しさん
06/07/08 15:08:16
>>579
それC++関係ないだろ。
581:デフォルトの名無しさん
06/09/01 19:22:44
>>580
≪関係ない≫だと?
582:デフォルトの名無しさん
06/09/04 19:57:52
C++のホットなネタは?
583:デフォルトの名無しさん
06/09/04 22:39:58
>>582 特に無い。
584:デフォルトの名無しさん
06/10/14 01:28:04
stdioとcstdioの違いを教えてください
585:デフォルトの名無しさん
06/10/14 02:03:51
>>584
cstdio がライブラリを std 名前空間内に宣言。
stdio.h は、↑に加えてグローバル名前空間にも宣言。
っていう建前だけど、実際は
stdio.h がライブラリをグローバル名前空間内に宣言。
cstdio は、↑に加えて std 名前空間にも宣言。
とかいう実装もよくある。
586:・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6
06/10/14 02:06:04
std 名前空間
587:・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6
06/10/14 02:07:15
まあ、プリプロセッサマクロに名前空間は適用できないしな
588:デフォルトの名無しさん
06/10/14 03:16:03
たまに見かけるstudio.hもよくわからん
589:デフォルトの名無しさん
06/10/14 05:48:10
ワロタ
590:デフォルトの名無しさん
06/10/14 10:10:24
あやまれ!スタジオ派にあやまれ!
591:デフォルトの名無しさん
06/10/26 16:03:30
Cωってどうなっちゃったの?
592:デフォルトの名無しさん
06/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型に変換されるのでしょうか?
593:デフォルトの名無しさん
06/10/28 02:40:02
>>592
規格上はどうなってんのか知らんが、とりあえずコンパイラによっては
「どっち使ってええのかわからん」とエラーを出すのは確か。
594:デフォルトの名無しさん
06/12/15 19:46:02
xmlを処理できるライブラリを教えてください
595:デフォルトの名無しさん
06/12/15 19:54:48
上級者の質問ではないだろ。
とりあえずXercesとかMSXMLとか。詳しくは知らない。
596:デフォルトの名無しさん
06/12/15 20:02:37
動的な次元の配列のライブラリってないもんか
597:デフォルトの名無しさん
06/12/15 20:04:21
>>596
boost::multi_array
598:デフォルトの名無しさん
06/12/15 20:14:18
それは静的だ。
動的次元配列は自分で作るしかないんじゃね?
599:デフォルトの名無しさん
06/12/20 16:57:05
gccとFedora core5でプログラムを作成しています。
ofstreamでflush()を使っても、実行されたタイミングでファイルが更新されません。
一定以上になるまで、システムのバッファ内に溜め込まれているようなのですが、
flush()実行時に確実にファイルに書き込ませるにはどうしたらよいでしょうか?
600:・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6
06/12/20 22:51:39
「STLによるコンポーネントデザイン」にvectorを使った2次元・3次元配列クラスの作り方書いてあった
それとも次元が動的に増減するの?
そりゃちょっとお手上げ
601:・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6
06/12/20 23:01:22
>>599
flushでフラッシュされないのって、C++標準の方法ではどうしようもないような。
クローズしてみるとか(かなりいい加減)
あと、内部的にメモリマッピングしてるような気もする。
602:デフォルトの名無しさん
06/12/22 22:57:20
断片化なしの動的二次元配列の一種。
URLリンク(capslockabcjp.kitunebi.com)
ブール閉包(boolean closure)のサイズとインデクスの計算
1次元配列にみっしりと二次元の表を納めつつ、
伸縮させても穴が空かない構造の作り方。
603:デフォルトの名無しさん
06/12/22 23:13:02
>>599
気のせいだと思いますよ。
604:デフォルトの名無しさん
06/12/22 23:22:16
>>599
ランタイムライブラリとは無関係にOSとドライバの側で制御しているから
OS独自の機能を使わないとどうしようもない。
URLリンク(www.linux.or.jp)
605:デフォルトの名無しさん
06/12/23 08:46:49
特殊なストレージデバイスを使ってない限り、
カーネルのin-coreイメージと外部デバイスの不一致は観測不能なんだが。
606:デフォルトの名無しさん
07/01/06 02:30:56
真贋について
URLリンク(www.kh.rim.or.jp)
607:デフォルトの名無しさん
07/01/06 02:39:51
それは遥か昔にストラウストラップと袂を分かった、
彼の頭頂の毛が喋ってるんだよ。
608:デフォルトの名無しさん
07/01/08 12:26:22
【ネガティブ派遣根性チェック】
3つ以上、思い当たる点があればアナタの性格はひん曲がっており、ネガティブ負け組人生を歩んでいます。
□偽装派遣先の社員の意見にはたとえ間違っていても反対しない
□偽装派遣先から「いつまでもここで仕事してくださいね」と言われるようになりたい
□自社に仕事を持ち帰れるように言われるとムカつく
□自社で仕事なんてできるわけがない
□派遣/受託の差異を指摘する人間はムカつく
□偽装派遣先には仕事だけでなく自分のプライベートについても指示して欲しい
□自分の月額金額を知らない
□偽装派遣先社員より自分の生涯収入が低いのは当然だ
□偽装派遣先に尻尾を振り、いつまでも一緒に仕事をすることが大切だ
□今のプロジェクトが終わっても同じ偽装派遣先に常駐したい
609:デフォルトの名無しさん
07/01/08 18:36:21
構造化して細かく関数毎に分けた方が、構造化されていないプログラムより最適化されやすいですか?
それとも関数の呼び出しのオーバーヘッド分だけ遅くなりますか?
610:デフォルトの名無しさん
07/01/08 22:59:00
>>609
最適化については、コンパイラ (とコンパイル時のオプション)
に依存するのでなんともいえない。
関数の呼び出しのオーバーヘッドは確実に存在する。
ただ通常それが問題になることはあまり無い。
て言うか、プログラム書くときはわかりやすく書け。
関数呼び出しのオーバーヘッドなんか気にするのは最終手段だ。
611:デフォルトの名無しさん
07/01/09 01:58:49
「最適化する必要を感じるまで最適化するな」
612:・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6
07/01/09 02:05:56
常に__forceinline
613:デフォルトの名無しさん
07/01/09 05:15:49
>>609
最近のコンパイラは小さい関数が数百個つらなっても
平気でinline化しやがるので無問題
614:デフォルトの名無しさん
07/01/11 23:18:23
URLリンク(en.wikipedia.org)
こんなに様々な提案があったとは思っていなかった。
615:デフォルトの名無しさん
07/01/12 10:27:53
class A{
const double x;
A() : x(10){}
}
と
class A{
static const double x=10;
}
の使い分けについて教えてください
616:デフォルトの名無しさん
07/01/12 11:03:20
>>615
前者はインスタンス毎に暮らす変数が作られるのでメモリが余計に
必要だが、コンストラクタ次第ではインスタンス生成時に x の値を
自由に設定できる。
後者はメモリは一つしか使わないので省メモリ型だが、コンパイル時
に値が決定するのでコンストラクタによって値を変える事はできない。
617:デフォルトの名無しさん
07/01/13 02:13:25
>>615
後者はコンパイルできない。
618:デフォルトの名無しさん
07/01/13 10:31:38
class A{
static const double x;
};
const double A::x = 10;
619:デフォルトの名無しさん
07/01/16 16:22:35
上級者の方にお聞きしたい問題があります。
--------------
【問題】
「計算式対応電卓」
・計算式を文字列として入力すると、その計算を行い、結果を出力するプログラムを
作成せよ。
-入力文字列を解析し、数値と演算子に分けて計算する。
-例:計算する式を入力してください。終了:end
使用可能演算子:四則演算(+-*/)
1+2
答えは3です。
・必ず四則演算のほかに、使用可能な演算子を追加せよ。
入力する際の演算子記号は任意にきめてよい。
-例:あまりを求める %
二乗を求める
・繰り返し何度も計算できるようにする。
その際、終了する場合の入力文字列を示せ。
--------------
初心者ということもあり、わかりません。
ソースファイルとして書き込んでいただきたいです。。
620:デフォルトの名無しさん
07/01/16 16:50:27
C/C++の宿題を片付けます 81代目
スレリンク(tech板)l50
621:デフォルトの名無しさん
07/01/16 16:56:09
>>619
URLリンク(ftp.gnu.org)
622:デフォルトの名無しさん
07/01/16 21:11:54
>619
URLリンク(spirit.sourceforge.net)
623:デフォルトの名無しさん
07/01/16 23:34:23
>>619
講義聴いてればちゃんとできるからまた来年やれ
624:デフォルトの名無しさん
07/01/17 00:33:04
若いの オラが村では派遣の問題を口にしちゃなんねーだ
お前さんはまだわけぇから言いたいこともあるべぇ
だべな、派遣問題を口にするとムキになって怒る者がおるでよぉ
問題の指摘は駄目だっぺぇ
派遣のことは口にしちゃなんねぇ
この村みたいな糞田舎で悲惨な生活するためにはよぉ
北朝鮮と一緒でよ、駄目のものを駄目と言ってはなんねえだべさ
タブーを口にしちゃいけねぇだ オラ達みたいな田舎者の鉄則だっぺ
625:デフォルトの名無しさん
07/01/17 09:41:28
>>619
逆ポーランド使ったらだめ?
626:デフォルトの名無しさん
07/01/17 11:34:32
>>617-618
まともなコンパイラを使ってください。
627:ららら
07/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* にキャストする、
という方法はあるのだが。汚い。
628:デフォルトの名無しさん
07/01/17 19:44:28
pimpl
629:デフォルトの名無しさん
07/01/17 19:54:08
Fooのポインタだけならclass Foo;とだけ書いておけばおk。
630:デフォルトの名無しさん
07/01/18 02:48:20
上級者の皆様、Haskellで使えるalgebraic data typeをC++で表現するにはどうすればいいでしょうか?教えてください。
631:デフォルトの名無しさん
07/01/20 10:35:44
>>615で
class A{
static const int x=10;
}
は許されるのに
class A{
static const double x=10;
}
は禁止されているのは何故なのでしょうか?
632:デフォルトの名無しさん
07/01/20 12:41:07
配列の要素数など整数定数への需要は大きいから、それだけ特別扱いされた。
633:デフォルトの名無しさん
07/01/20 14:29:28
class A{
static const double x;
};
const double A::x = 10;
これでできるのなら、
class A{
static const double x=10;
}
の様な書き方も許可して良さそうな気がするのですが・・・
634:・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6
07/01/20 14:59:27
class A{
static const double x() const { return double(10); }
}
で代用できるから特に困らない
635:デフォルトの名無しさん
07/01/20 15:00:59
C++のクラスの静的メンバ変数は(constの有無に関わらず)、
Cのヘッダに宣言しどこか1箇所ソースで定義する流儀を受け継いでいると考えればそう不自然でない。
納得がいくかどうかはともかく。
そんなにクラス内に書きたければ、静的メンバ関数ならインラインに書けることを使う手もなくはない。
636:デフォルトの名無しさん
07/01/20 15:13:30
C++ らしいよなぁ。
template もそうなんだけど、なんつーか、
もう少し素直にやりたいことを直感的に書けないものかw
637:・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6
07/01/20 15:22:46
Borlandコンパイラならプロパティ(独自拡張)があるね
638:デフォルトの名無しさん
07/01/20 17:09:58
そういやtemplateなら>>618のようなのを全部ヘッダーに書いてもいいんだっけ?
639:デフォルトの名無しさん
07/01/20 19:41:48
>>637
Visual C++も独自拡張でプロパティを持っている。COMラッピングに使っている。
>>638
テンプレートでも定義が必要。ただしヘッダに書ける。
template<typename T>
class A{
static const double x;
}
template<typename T>
const double A::x = 10;
たしかこんな感じ。
640:・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6
07/01/20 19:41:55
駄目だから定数を返す関数にする。どうせインライン展開されるし
641:デフォルトの名無しさん
07/01/21 17:14:28
>631,633
あれ?出来ないんだっけ?
gcc3.4.2なら出来たけど。
てか、最近のコンパイラなら出来るはずだと思って
フリーで配ってるソースで使いまくっちゃったけど。。。
642:・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6
07/01/21 17:19:40
厳密にはできなくはない
__declspecキーワード使うことになるが
643:デフォルトの名無しさん
07/01/21 18:32:35
規格では整数型のみだけだっけ?
644:ららら
07/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 を使うことって可能ですか?
645:デフォルトの名無しさん
07/01/21 18:59:42
それは無理だな
646:デフォルトの名無しさん
07/01/21 19:01:37
無理だよ
647:デフォルトの名無しさん
07/01/21 19:35:38
>>644
>Foo を先に宣言
Foo を先に定義、の間違いだな
そんな細かい指摘はともかく、この要求は比較的需要があると思うけれど、
(少なくとも自分はこういうことをしたいときが結構ある)
みんなどう思ってるんだろ
648:デフォルトの名無しさん
07/01/21 20:04:33
>>647
こういうのがあるから、ネストされた public 型定義は避けたほうがいい。
649:デフォルトの名無しさん
07/01/22 09:53:27
どうしてもって場合は苦肉の策だけど、Hoge側をクラステンプレートにして
しまうのもありかも( Foo をテンプレート引数にする )。
650:デフォルトの名無しさん
07/01/27 23:55:49
魔法少女ポリモル
スレリンク(prog板)
651:デフォルトの名無しさん
07/02/02 20:43:47
vc2005EEを使っているのですが、質問があります。
デバッグモードではCPU使用率が20~35%に押さえられているのですが、
リリースモードにすると使用率が常時100%に跳ね上がってしまいます。
これの原因分かる方いませんか?
もしくは原因究明の方法が分かる方いませんか?
(プロファイラは使えません^^)
どうかよろしくお願いします。
652:デフォルトの名無しさん
07/02/02 21:37:54
>>651
マルチはラウンコにでも逝ってろ。
653:デフォルトの名無しさん
07/02/02 22:20:52
>>652
スレリンク(tech板)
一度、↑のスレの989で聞いたのですが、
スレ違いといわれてしまったので、もう一度質問させてもらっています。
654:デフォルトの名無しさん
07/02/02 22:50:15
>>653
あってるかどうかの自信はないが原因やその調査方法や対策等々を多少予想がつかんでもないが、
プロファイラを使えば一発で解決する問題なのに、あえてプロファイラは使えませんと逃げるような
教えて君がくるようなスレではありません、ここは。どっか逝け。
つーかせめてどんなプログラムかぐらい書け。あと、テキトーにプログラムをコメントアウトして
現象が変わったらその部分あるいはその部分に関連したところになんかある。ロクに情報も提供
しない教えて君はたまにはそーゆー地道なデバッグでもやってなさい。
655:デフォルトの名無しさん
07/02/02 22:51:41
サクセスに振り込んだお金が返ってこない
まで読んだ
656:デフォルトの名無しさん
07/02/02 23:01:07
「まで読んだ」ネタは
それを書くより早く読めるレスについてるとなんか痛い
657:デフォルトの名無しさん
07/02/02 23:08:58
ごめんね母ちゃんはじめて「まで読んだ」したから
658:デフォルトの名無しさん
07/02/03 00:36:04
>>654
別に逃げているわけでは無く、
もともとVC8EEにはプロファイラがついていないのです。
これを使えば解決することは分かっていたので、あらかじめ注釈させていただきました。
情報が足りなかったことは誤ります。
作っているのは所謂ノベルゲームです。
>>654にあるようにプログラムを適当にコメントアウトしていったところ、
サウンドを再生する専用のスレッドがネックになっていることが分かりました。
ここでのSleep間隔を0からそれより大きくした結果(現在は5)、
CPU使用率が20%にまで下がりました^^
ちょっと納得できない部分もあるのですが、とりあえず上手く動くようになりました。
どうもありがとうございます^^
659:デフォルトの名無しさん
07/02/03 00:40:25
> もともとVC8EEにはプロファイラがついていないのです。
もろ逃げじゃんw
VC8EEプリインストールモデルなんて聞いたことないしなぁw
学校のPCだけでやってるんだったらもちスレタイ嫁。
660:デフォルトの名無しさん
07/02/04 14:18:40
>>658
OS上CPU使用率が100%と表示されていても
本当にCPUの演算ユニットを100%ぶんまわしてるわけじゃないから、
Sleepは0でも良い。1あれば十分。5は多すぎ。
661:デフォルトの名無しさん
07/02/05 02:24:45
>>659
ごめん。
意味が分からない。
>>660
windowsのスレッドシステム(自分は2000使ってます)をよく知らないのですが、
メインの方の処理が軽くなると、
コンテキストスイッチが頻発してCPU使用率が異常に上がるのかなぁ。
実行速度は軽くなっているのに、使用率が上がるということは
無駄な処理がすごく増えたってことですよね。。。
あと、5msのSleepは確かに長すぎるかもしれません。
メインスレッドの方がつまってくると、
音飛ぶ可能性ありますね。
このあたりはもうちょっと調整してみます。
662:デフォルトの名無しさん
07/02/05 02:31:09
>>661
Waitのない無限ループを持つスレッドがひとつでもあればCPU使用率は100%になる。
そんな当たり前なことも理解できてないようなヤツがいていいスレじゃない。どっか逝け。
663:デフォルトの名無しさん
07/02/05 15:12:33
>>662
非HTでシングルコアの場合だけな。
664:デフォルトの名無しさん
07/02/06 01:23:31
>>662
Wait = Sleep(0) という解釈でいいなら、ちゃんと入ってましたよ。
問題は
1, メインスレッド・サウンドスレッドともにちゃんとSleepが入っていた
(メインの方はFPS固定の可変Wait, サウンドの方は常に0)
2, 単純な実行速度はデバッグモード時よりもリリースモード時の方が速かった
3, メインスレッドのWait値もリリースモードの方が大きかった
にも関わらず、デバッグモードではCPU使用率が30~40%、
リリースモード時は常に100%になっていた点です。
リリースモードではサウンドスレッドが相当無駄なことをしているのは理解できるのですが、
それならデバッグモードではなんで100%にならないのかなと。。。
>>663
そうですね^^
665:デフォルトの名無しさん
07/02/06 01:46:39
>>663
デュアル/マルチプロセサは無視か?
>>664
> Wait = Sleep(0) という解釈でいいなら、
よくないだろ。
それは、ともかくコードの断片も示せないなら、エスパー希望の広告を
新聞に載せた方が早いので、ここから立ち去ってくれ。
666:デフォルトの名無しさん
07/02/06 02:15:36
>>664
C++の話題じゃないから、662を読んで分からないなら Windows 板へ池
667:デフォルトの名無しさん
07/02/06 06:56:43
>>664
処理速度の速いほうがCPU使用率も高くなんのはあたりまえだろ、どっか逝け。
668:デフォルトの名無しさん
07/02/06 08:20:29
俺も大体そう思うな
プロファイラがあってもデバッグ版のCPU使用率が低い理由はわからないと思う。
これに関しては私には判りません。
デバッグモードでは何か特殊な待ちがあるんだろか。
たとえばwaveOutWriteなら複数のバッファを渡せるので
音飛ぶ可能性は著しく低く、
バッファが終わるころにメッセージ通知が来るから
それまで何もしないのでCPU使用率を著しく下げることも出来るはず。
ノベルゲームの経験ないから推測だが
ノベルゲームで絶えず処理している状況が存在する理由がわからない。
669:デフォルトの名無しさん
07/02/06 11:21:53
デバッグ版ではシステムコールの呼び出しが
増えてたりするからじゃないのん?
670:デフォルトの名無しさん
07/02/06 22:06:52
c++のリファクタリングツールは
VisualStudioなら
ref++
Refactor! Pro
emacsで使えるツールはないの?
671:デフォルトの名無しさん
07/02/06 22:11:02
URLリンク(www.wholetomato.com)
リファクタリングツールいろいろ
672:デフォルトの名無しさん
07/02/06 22:27:03
URLリンク(xref-tech.com)
emacsリファクタリングツールみつけた
試したいけどemacsでc++コンパイルする環境整えるの大変だ
673:デフォルトの名無しさん
07/02/07 23:49:30
すみません。これで最後にします。
>>668
サウンドライブラリとして、OpenALを使っているので、
空きバッファがあるかどうか
常に監視する必要があるのです。
確かにwaveOutならその必要はありませんね。
>>669
システムコールかもしれません。
一応テストとして、
・適当な処理+Sleep(0)を繰り返すスレッド
・適当な処理+Sleep(10)を繰り返すスレッド
の二つを作って実行させたのですが
デバッグモード、リリースモードの両方でCPU使用率は100%でした。
(当然か。。。)
件のアプリでは、さらに多くのスレッドといろいろな処理が付加されているので、
どこかになにがしかの待ちが入っているんだと思います。
(共有リソース待ちや、IO待ち?)
感覚としては、スレッド間のリソース待ちが原因では無いかと思いました。
(調べてみるとミキシングスレッドとサウンドデータ供給スレッドが別でした^^)
ちょっとこれ以上は分から無いのですが、
他にやることもあるのでこの件はこれで終わりにしたいと思います。
それでは、スレ汚し失礼しました。
674:デフォルトの名無しさん
07/02/10 12:20:00
実行中にブレーク掛けてみて、どの処理が走ってるかみてみたら。
何回かやれば時間食ってる部分が解るだろ。
675:デフォルトの名無しさん
07/02/15 00:33:53
>>674
遅れてすみません。
ブレーク掛けてみたのですが、
意味の分からない結果になりました。
なんか、OpenALのバグのような気がします。。。
原因が分かったら報告します。
676:デフォルトの名無しさん
07/02/15 09:20:44
ここは上級者が集まるスレです。上級者に質問するスレではありません。
677:デフォルトの名無しさん
07/02/16 12:34:00
集まって何すんの?
678:デフォルトの名無しさん
07/02/16 12:34:37
書き込んだり、書き込みを読んだりするに決まってるじゃん。
679:デフォルトの名無しさん
07/02/16 13:18:05
書き込んだり、書き込みを読んだりして何すんの?
680:デフォルトの名無しさん
07/02/16 14:53:13
できることとか、やりたいこと。
681:デフォルトの名無しさん
07/03/02 19:46:02
夏時間まで考慮して、タイムゾーンを取得する方法を教えてください。
682:デフォルトの名無しさん
07/03/27 02:43:43
boolは何故1バイトも消費するのですか?
683:デフォルトの名無しさん
07/03/27 05:01:28
>>682
1バイトとは限らんぞ。処理系依存だ。
VCではint型にダウンキャストされるんじゃなかったっけ?
#かなり昔に仕様書らしきもので読んだ気が。
仮に>>682が使用している環境でboolが1バイト使うとして話を進める。
>>682は1ビットで十分だっていいたいんだろうけど、
メモリの最小管理単位が1バイトだから、最低でも1バイト使わないとだめ。
C言語で言うビットフィールドを使って、ビット単位で管理するのもありだけど
(そうすれば、1バイトで8個のboolを管理できるよな)、それだと管理のための
メモリが必要になるし、速度面で効率的じゃなくなる。
だから、bool型は1ビットじゃないんだ。
もっとも、処理系によってはビット単位で管理してるのもあるかもしれんが。
684:・∀・)っ-○◎●
07/03/27 05:05:29
ダウンキャストっていうのかそれ
VC++の最近の実装(っていうかただのtypedef)ではBOOL=charだったような
685:デフォルトの名無しさん
07/03/27 05:06:51
>>683
今VC++でsizeof(bool)の値を見たら1だった。
俺はbool型変数はクラスメンバぐらいでしか使わないから、
たとえ1ビットだとしてもアラインメントの影響で恩恵にあずかれないな。
686:・∀・)っ-○◎●
07/03/27 05:18:54
vector<bool>とか使うと恩恵があるかも
687:デフォルトの名無しさん
07/03/27 06:31:31
boolをvectorなんかに入れて一体何に使えというんだ
688:・∀・)っ-○◎●
07/03/27 06:34:33
何だ知らないのか
URLリンク(www.scl.kyoto-u.ac.jp)
689:デフォルトの名無しさん
07/03/27 06:50:59
>>688
そういえばそんなもんもあったな。
690:デフォルトの名無しさん
07/03/27 07:13:24
>684のすべてが意味不明
691:デフォルトの名無しさん
07/03/27 22:04:00
>>683
速度・効率だけでなく、ビット単位ではポインタとしてメモリアドレスが使えない。
ワードマシンでのchar*みたいにコンパイラが頑張る手もあるが、
bool*だけでなく必然的にvoid*もbool*に合わせなければならず、
void*とbool*だけ他のポインタと異なる大きさになってしまう。
無論規格上は問題ないが、実際問題void*の大きさがほかと異なるなんてやっていられないだろ。
692:デフォルトの名無しさん
07/03/27 23:05:56
関数へのポインタとデータへのポインタの大きさが違うなんて
昔は当たり前だったから、なんてことない。
693:デフォルトの名無しさん
07/03/27 23:14:25
>691
boolを1bitにするなら、sizeof(bool)をどうする気?
694:デフォルトの名無しさん
07/03/27 23:18:46
>>693
1/8
usodakara
695:デフォルトの名無しさん
07/03/27 23:21:03
>>693
それ忘れていたorz
>>684
Windows APIでは、typedef int BOOL; typedef char BOOLEAN;
しかしboolとは関係ない。
696:デフォルトの名無しさん
07/03/27 23:33:40
> typedef int BOOL; typedef char BOOLEAN;
わけわからん >>MS
ATL::CComPtr::operator&()もわけわからんかった。
凶悪。
697:・∀・)っ-○◎●
07/03/28 01:08:39
>>695
そこは固定じゃない。
なんのtypedefかはSDKのバージョンによってもしょっちゅう変わる。
まあ固定長ビット配列ならstd::bitsetなんかが一番効率いいかな。
1ワードの中に複数要素が詰め込めると何かと便利。
698:デフォルトの名無しさん
07/03/28 01:20:35
URLリンク(msdn2.microsoft.com)
実際にヘッダでどうなっているかはともかく、文書化されていることは当てにしていいと思う。
ところでBOOLEANはBYTEだったね、すまん。
699:デフォルトの名無しさん
07/03/28 02:12:43
>>691
void* と char* は同じ内部表現である必要がある。 (ISO C++ 3.9.2.4)
そのほかメモリモデルやオブジェクトモデルの定義からも char より
小さい型は存在し得ないと言える。
700:デフォルトの名無しさん
07/03/28 02:12:52
BOOL
Boolean variable (should be TRUE or FALSE).
shouldって便利な言葉だな
701:・∀・)っ-○◎●
07/03/28 02:30:37
>>698
msdn2~はVS2005のドキュメント
702:デフォルトの名無しさん
07/03/28 02:38:09
>>701
団子ちゃん、流れとは全然関係ない質問があるんじゃが、
団子ちゃんがC++上級者だと家庭して、団子ちゃんは Boost を
1. あー、ごっつい靴だろ?
2. たまに使う。
3. よく使う。
4. もうあなたなしじゃ生きられないの!
5. あー、アレのほげほげは俺がコントリビュートしてんだよ。
の、どれ?
703:702
07/03/28 02:39:35
ちなみに俺は、1 だが、それでも自分を C++ 上級者だと思ってる。
704:・∀・)っ-○◎●
07/03/28 02:44:25
2かな
ふだんはATL/WTL+STLあと.NET
regexとrandom::mt19937rは便利だね
あとsandboxにあがってたfixed_arrayが便利だから改造して使ってる
705:デフォルトの名無しさん
07/03/28 03:06:41
.NEET 使ってんだ。
706:デフォルトの名無しさん
07/03/28 07:26:32
>697
おいおい。BOOLの実体がint以外だったことがあるってーの?
WIN16の頃の話じゃねーだろーな。
707:デフォルトの名無しさん
07/03/28 09:17:07
>>701
msdn.microsoft.comの時代から698の文書は存在した。
今は英語版のMSDNライブラリオンラインはあちこちmsdn2への転送になっている。
708:デフォルトの名無しさん
07/03/28 15:45:05
bool型はC++仕様書ではintと同じバイト数。
でも大手の実装するコンパイラは大抵1バイトしか割り当てないのが普通。
さて、酒飲んで寝るか。もう目が覚めませんように。
709:デフォルトの名無しさん
07/03/28 16:11:38
>>708
そんな規定はどこにも無い。
710:デフォルトの名無しさん
07/03/28 16:50:25
>>708
嘘吐きはそのまま永眠してなさい。
711:デフォルトの名無しさん
07/03/28 18:29:02
1に書いてある内容とまるで裏腹なスレの内容
なんて皮肉だ
712:デフォルトの名無しさん
07/03/28 23:37:58
> 我こそはC++プロフェッショナルだという方の書き込みをお待ちしております。
こんなこと書くから、自分でプロだと「思い込んでる奴」ばっかりになるんだよ。
713:デフォルトの名無しさん
07/03/28 23:42:49
>>711-712
ここはネタスレなのにお前らときたら…
714:デフォルトの名無しさん
07/03/29 16:37:54
>>711-712のような人たちのためのホイホイスレでもあるからいいじゃないか。
715:デフォルトの名無しさん
07/03/29 18:52:05
>>711-712は本気で自分がC++上級者だと思って
このスレに降臨なされたのですか
716:デフォルトの名無しさん
07/03/30 11:42:32
スレタイに騙されて覗いてみたら期待してたのと違ったんで
怒りに任せて書き込んでみたんでしょう。
スレ勃てから2年半もたってノコノコやってきて今更な事を書く人ってのは
そういうもんです。
717:デフォルトの名無しさん
07/03/30 14:17:33
>>714-716
ここはネタスレなのにお前らときたら…
718:デフォルトの名無しさん
07/03/30 14:26:29
もうちょっとためてから反復しないとネタとして面白くないです。
719:デフォルトの名無しさん
07/03/30 21:56:50
団子ちゃん以外の人は >>702 で言うと何番?
720:デフォルトの名無しさん
07/03/30 22:02:40
特定の部分なら3だが全般的には2だな
721:・∀・)っ-○◎●
07/03/31 00:22:23
全部使ってる奴がいたらそれはそれで気持ち悪いぞ
MPLとかSpiritとか、いいかげんにしる
722:デフォルトの名無しさん
07/03/31 06:16:03
俺4。上級者じゃないけど。MPLとかは流石に可読性的に使えないがな。
723:デフォルトの名無しさん
07/03/31 17:01:03
MPLとPreprocessorとSpiritとPhoenixとXpressiveと
LambdaとuBLASとgraphとfilesystemを全部使うアプリを
testでテストするやつこそが4だな。
724:デフォルトの名無しさん
07/03/31 22:33:03
どういう処理をしようとして全部必要になるんだろうか……
725:デフォルトの名無しさん
07/04/04 13:19:51
環境非依存で、ミリ秒単位でsleepさせる方法はありませんか?
726:デフォルトの名無しさん
07/04/04 14:16:24
>>726
ない。
特定のCPU等に依存していいならなんらかの方法があるだろうが、
どのみちほとんどマシン語のコードになる。
727:デフォルトの名無しさん
07/04/04 14:49:56
>>727
ですよね。
728:デフォルトの名無しさん
07/04/04 19:01:43
>>727
大丈夫か
729:デフォルトの名無しさん
07/04/04 20:00:16
>>729
注:私の有意義な発言に対し自分の理解不足を棚に上げ煽り、1行レス
で返す方が多いようですが、そのような方はスレの皆様を混乱させるだけでなく
スレの雰囲気を崩しかねないのでお黙り下さい
また質問者は回答者に知識を披露する場を与える貴重な存在なので、
質問者を見下した回答、あまりにも儀礼を欠いた回答も厳重に禁止いたします。
忙しい中、少ない時間の合間を縫って質問しに来てるわけですので、
その辺ご承知下さい。なお、当方が質問に対して有意義な答えであると
判断した方には評価いたしますので各自よく調べ、よく考え正確な回答をするように。
730:デフォルトの名無しさん
07/04/04 23:31:15
まずい餌だな。3点
731:デフォルトの名無しさん
07/04/07 08:44:22
>>731
死ねよクズが
732:デフォルトの名無しさん
07/04/07 16:54:40
>>733
死ねカス
733:デフォルトの名無しさん
07/04/07 16:55:12
>>732
お前が死ねカス
734:デフォルトの名無しさん
07/04/07 17:02:47
729 名前:あぼ~ん[あぼ~ん] 投稿日:あぼ~ん
735:デフォルトの名無しさん
07/04/07 18:59:56
>>731-733
ありきたりのパターン。2点
736:デフォルトの名無しさん
07/04/07 22:37:50
かといってこんなことに新鮮味を追求されるのもアレだな
737:デフォルトの名無しさん
07/04/10 18:46:19
絶対値を求める関数が他の言語では一つしかないのにCではabsとfabsの二つが存在する理由を教えてください。
738:デフォルトの名無しさん
07/04/10 19:16:00
その質問をこのスレでする理由を教えてください。
739:デフォルトの名無しさん
07/04/10 22:43:33
>>737
> 絶対値を求める関数が他の言語では一つしかない
Fortran なんか4個もあるぞ。(w
iabs(整数) => 整数
abs(実数) => 実数
dabs(倍精度) => 倍精度,
cabs(複素数) => 実数
740:デフォルトの名無しさん
07/04/10 22:56:30
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で多重定義がなされている。
741:デフォルトの名無しさん
07/04/11 00:27:51
ここまでの話を総合すると、rubyが一番スマートだな。
742:デフォルトの名無しさん
07/04/11 21:36:45
>>741
というと ruby は絶対値をマイナス値で返す nabs 一個のみとかそんな感じ?
743:デフォルトの名無しさん
07/04/11 23:27:22
オーバーロードしてるから見た目上一個やん
744:デフォルトの名無しさん
07/04/12 04:39:04
>>743
マイナスの最大値でオーバーフローするものしかないってこと?
# 戻り値が unsigned なら大丈夫だけど。
745:デフォルトの名無しさん
07/04/12 11:07:54
>>737
実行速度を上げるため
746:デフォルトの名無しさん
07/04/12 22:35:50
>>744-745
釣りですか、ご苦労様です。
747:デフォルトの名無しさん
07/04/12 22:59:30
直観が「突っ込み所だ」と告げたはいいが、スレタイがスレタイだけに
具体的に突っ込んでボロ出す羽目になったらどうしようってのがちょっぴり不安で、
結果こんな感じに落ち着きました、という感じのレスだな。
748:デフォルトの名無しさん
07/04/13 23:38:12
>>747
>>747
749:デフォルトの名無しさん
07/04/14 02:31:47
たとえば負数が1の補数な処理系では、
INT_MINを放り込んでも、オーバーフローしないよ。
750:デフォルトの名無しさん
07/04/14 04:29:20
そうだね。帰っていいよ。
751:デフォルトの名無しさん
07/04/14 09:06:05
馬鹿じゃないの?
752:デフォルトの名無しさん
07/04/14 09:08:20
泣くなよ
753:デフォルトの名無しさん
07/04/22 08:47:09
>>688
1998年w
754:デフォルトの名無しさん
07/05/18 18:12:10
float x=10.0;
で
exp(x)
とすると、expはfloat型に対応した関数が呼び出されますが、
exp(10.0)
とした場合、double型に対応した関数が呼び出されると考えてよいのでしょうか?
755:デフォルトの名無しさん
07/05/18 20:30:24
ワラタ
756:デフォルトの名無しさん
07/05/18 21:39:41
>>754
そうだよ
ちなみにexp(10.0f)とすればfloat版を選べる
757:デフォルトの名無しさん
07/05/21 02:39:50
まさかとは思ったが
ここも隔離スレだったか
758:デフォルトの名無しさん
07/05/21 02:45:16
>>757
全然そんなことないから、ここから出て行かないでね♪
759:デフォルトの名無しさん
07/05/25 03:24:06
>>21
いまさらながら
const string 上級者="俺";
のが上級者っぽいな。
760:デフォルトの名無しさん
07/07/01 15:07:07
class 上級者;
typedef 俺 上級者;
761:デフォルトの名無しさん
07/07/01 16:31:11
>>760
#define 上級者 ナルシスト
をお忘れですよ。
762:デフォルトの名無しさん
07/07/05 17:48:21
大抵のコンパイラでC99はスイッチをつけないとコンパイルできないのは何故?
763:デフォルトの名無しさん
07/07/05 18:45:42
C++のコンパイラ?
C99がC++に取り込まれるのはC++0x(たぶん09)からだよ。
764:デフォルトの名無しさん
07/07/05 20:03:32
C++かアセンブリ言語どっちが難しいですか?
765:デフォルトの名無しさん
07/07/05 20:43:18
C++
766:デフォルトの名無しさん
07/07/05 21:05:20
アセンブリは面倒なだけで難しいのとはまた違う
技術書を読む大変さはあるけどなー
767:デフォルトの名無しさん
07/07/06 21:10:24
マクロアセンブラならまあいける
本当にただのニーモニック→機械語変換だとアドレスの管理を全部自分でやらないといけないから死ねる
768:デフォルトの名無しさん
07/07/07 00:21:56
それアセンブラって言わないと思うが...
769:デフォルトの名無しさん
07/07/07 00:56:53
DEBUG.EXEだな
あれのアセンブラ機能は貧弱だったな
それでもcom形式ぐらいならなんとか書けちゃったりするが
770:デフォルトの名無しさん
07/07/07 12:02:34
FEDCBA98
771:デフォルトの名無しさん
07/07/11 12:32:08
何の16進かと思ってググったらゲーム改造かよ。
何にしろバイナリ書き換えは趣味の域でなきゃやりたくないな。
772:デフォルトの名無しさん
07/07/22 20:44:27
C++上級者(笑)
773:デフォルトの名無しさん
07/07/22 20:52:46
三(笑)
( *´ω`)ムシャムシャ
つi'"':
`、:_i'
| ┌┐
│ ││ ││ 若干食べられてしまったが
| ││ ││ >>772はC++より安く見えることがわかる
| ││ ││
└──────
C++上級者(笑) >>772
774:デフォルトの名無しさん
07/09/24 07:47:59
defineの代わりにconstを使うよう推奨されているのに、コンパイラのソースを見ると
大量にdefineが使われているのはなぜ???
775:デフォルトの名無しさん
07/09/24 09:54:14
もともとCで書かれていたか、
実はCとしてコンパイルするようになっているか、
書いた人間がconst推奨を知らなかったか。
776:デフォルトの名無しさん
07/09/24 12:36:23
Cと共用なんだろ。
何を悩む必要がある
777:デフォルトの名無しさん
07/09/24 19:44:30
>>774
錯覚が目
778:デフォルトの名無しさん
07/09/28 00:10:08
>>774
システムのベンダとユーザは事情も、従うべきルールも違う。
システムヘッダの真似してアンダースコアで始まる名前を使うような人大杉。
引数に渡す定数を参照させるだけのために、
オブジェクトのリンクを強要するDLLなんかありえないし、
他の言語とリンクさせるときや、バイナリ互換性が問題なら、
定数の具体的な値をはっきり公開するしかない。
それに、Cでは配列サイズにconst整数を使えない。
779:デフォルトの名無しさん
07/09/28 01:31:32
constって言ったって、ヘッダで初期化子付きの定義を与えるんだから、
DLLなんて関係ないけど、ほかは合っているや。
780:デフォルトの名無しさん
07/09/28 03:04:35
>>constって言ったって、ヘッダで初期化子付きの定義を与えるんだから、
プレーンCモードでコンパイルされたときに実体が増殖し放題で
リンクエラーになるからDLLベンダがそれをやったら配慮不足だ。
よく分かってないハード屋寄りのユーザとかが目を回すからな。
このスレ的にはC++コンパイラだとそれができるっていうのは大事だけどな。
781:デフォルトの名無しさん
07/09/28 10:10:17
ぷ
782:デフォルトの名無しさん
07/10/11 01:31:51
const だと余計にメモリ消費するからヤなんじゃないの?
783:デフォルトの名無しさん
07/10/12 23:21:57
staticにすらば、アドレス参照とかしなければ実体は取り除かれるんじゃないの?
コンパイラの能力にによるだろうけど
784:デフォルトの名無しさん
07/10/13 01:50:27
>>783
C++ では const つけた名前空間スコープのオブジェクトはデフォルトで
内部リンケージになる。 static は要らない。
785:デフォルトの名無しさん
07/10/20 22:13:19
static const volatile unsigned long long int X;
は意味無しか
786:デフォルトの名無しさん
07/11/01 04:00:31
インテルコンパイラでループをSSEで計算させようとしているのですが、
コンパイル時に
loop was not vectorized: dereference too complex
というレポートを返してきます。
これは具体的にはどのような問題があるといっているのでしょうか?
787:デフォルトの名無しさん
07/11/01 17:32:37
>>786
そのままじゃね?
逆参照が複雑過ぎてベクトル化出来なかったお
意味は、その箇所にSSE使えなかったと
ポインタポインタポインタ使ったとか間接的なイテレータ使ったとか?コード見てないからなんとも言えないけど。インテルコンパイラ使ったことないし。
788:デフォルトの名無しさん
08/01/22 16:22:42
インテルコンパイラとgccだとやっぱり最適化はインテルの方が上?
789:デフォルトの名無しさん
08/01/22 18:18:26
上。特に、オブジェクト間最適化は凄い。
790:デフォルトの名無しさん
08/02/24 17:30:31
オブジェクト間最適化って何?
791:デフォルトの名無しさん
08/02/24 18:03:39
リンクの段階で最適化かけるんじゃないの
792:デフォルトの名無しさん
08/03/20 10:54:39
それならVC8も負けてないぜ。
リンク時間の長さがそれを証明してくれている。
793:デフォルトの名無しさん
08/03/20 11:48:43
pgi使え