C++上級者が集まるス ..
[2ch|▼Menu]
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使え

794:デフォルトの名無しさん
08/07/31 23:39:38
スレリンク(tech板:124番)

 おまけに、C++でメタプログラミングって、ボケてんのか。
 いつまでたっても 「C with Classes」の領域から進化しないものをw。
 まさか、テンプレートを持ち出さないよな。
 

 C何チャラっとぃうのを見ると虫唾が走るんだけれど。

795:デフォルトの名無しさん
08/08/01 04:42:42
書籍スレは相変わらず
自尊心に能力が追いついていかない子の溜まり場なんだな・・・。

796:デフォルトの名無しさん
08/08/01 10:58:08
×書籍スレ
○プログラム板

797:デフォルトの名無しさん
08/08/01 12:51:00
>>791
リンカー無しじゃなかったか?
確かGCCのリンカーで代用するようになってた気がするぞ。

798:デフォルトの名無しさん
08/08/31 13:12:08
int main(void){
 return 0;
}
のreturn 0の0ってどこで使われるの?
シェルから読めるの?

799:デフォルトの名無しさん
08/08/31 13:16:35
通常、読めます。bsh系なら$0、csh系なら$statusかな。

800:デフォルトの名無しさん
08/08/31 22:25:51
MS-DOS、WindowsコンソールアプリならErrorLevel

801:デフォルトの名無しさん
08/08/31 22:30:09
WindowsのGUIアプリだと確か捨てられるんだよな

802:デフォルトの名無しさん
08/08/31 22:31:22
>>801
それでも欲しければ、GetExitCodeProcess

803:デフォルトの名無しさん
08/09/07 15:22:14
俺上級者。なんでも聞いて。

804:デフォルトの名無しさん
08/09/25 01:58:01
質問: 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");
}

805:デフォルトの名無しさん
08/09/25 01:59:18
質問1)
typeidが使えない標準環境はどうすればいい?

質問2)
operator_lshift構造体を介さずに直接書くと
gcc 3.4.4でinternal errorが出るのだが
これは誰が悪い?

質問3)
operator<< だけでなく、たくさんの演算子(>>,&,|,+,-など)について
結果の型をテンプレートパラメータ typename Xとtypename Yから
導出したいんだが、もっと楽な方法はない?

806:デフォルトの名無しさん
08/09/25 02:00:16
すまん、質問を訂正

(誤)typeidが使えない標準環境はどうすればいい?
(正)typeofが使えない標準環境はどうすればいい?

807:デフォルトの名無しさん
08/09/26 01:14:25
804は、XとYにデフォルトコンストラクタが定義されていないとコンパイルできないので修正
template <typename X, typename Y> struct operator_lshift { typedef typeof((*(X*)0)<<(*(Y*)0)) result_type; };
gccならこれでOKっぽい

808:デフォルトの名無しさん
08/10/01 22:08:50
スレリンク(tech板:615番)

ちょっとこれ評価してよ


809:デフォルトの名無しさん
08/10/01 22:52:24
自分で評価しろ、ボケ

810:デフォルトの名無しさん
08/10/01 22:55:23
上級者なのにそんなこともできねのかよw


811:デフォルトの名無しさん
08/10/13 19:43:52
 | 三_二 / ト⊥-((`⌒)、_i  | |
 〉―_,. -‐='\ '‐<'´\/´、ヲ _/、 |
 |,.ノ_, '´,.-ニ三-_\ヽ 川 〉レ'>/ ノ 
〈´//´| `'t-t_ゥ=、i |:: :::,.-‐'''ノヘ|        
. r´`ヽ /   `"""`j/ | |くゞ'フ/i/        
. |〈:ヽ, Y      ::::: ,. ┴:〉:  |/         できない事に何か問題でもあるのか?
. \ヾ( l        ヾ::::ノ  |、
 j .>,、l      _,-ニ-ニ、,  |))
 ! >ニ<:|      、;;;;;;;;;;;;;,. /|       ___,. -、
 |  |  !、           .| |       ( ヽ-ゝ _i,.>-t--、
ヽ|  |  ヽ\    _,..:::::::. / .|       `''''フく _,. -ゝ┴-r-、
..|.|  |    :::::ヽ<::::::::::::::::>゛ |_   _,.-''"´ / ̄,./´ ゝ_'ヲ
..| |  |    _;;;;;;;_ ̄ ̄   |   ̄ ̄ / _,. く  / ゝ_/ ̄|
:.ヽ‐'''!-‐''"´::::::::::::::::: ̄ ̄`~''‐-、_    / にニ'/,.、-t‐┴―'''''ヽ
  \_:::::::::::::::::::::::::::::::::::::::::::::::::::::::\ /  /  .(_ヽ-'__,.⊥--t-⊥,,_
\    ̄\―-- 、 _::::::::::::::::::::__::/  /  /   ̄   )  ノ__'-ノ
  \    \::::::::::::::`''‐--‐''´::::::::::/  / / / ̄ rt‐ラ' ̄ ̄ヽヽ
ヽ  ヽ\   \:::::::::::::::::::::::::::::::::::::/      /   ゝニ--‐、‐   |
 l   ヽヽ   \:::::::::::::::::::::::::::::::/           /‐<_  ヽ  |ヽ



812:デフォルトの名無しさん
08/10/13 20:34:54
上級者は実生活で十分に自尊心が満たされていて、
ネットで名無しに褒めてもらう必要なんかまったく無いから、
頭の悪い人が悔し紛れに挑発なんかしても動いちゃくれないんだよね。

813:デフォルトの名無しさん
08/10/13 21:10:28
上級者が唸るようなトピックを持って来てくれ

814:デフォルトの名無しさん
08/10/14 18:45:28
>>808 何故、今頃?っていう感じですかねぇ。
私が勤務している某光学機器メーカーでは
15年前にこの手のエンジン開発は出つくして
しまっている。



815:デフォルトの名無しさん
08/10/14 20:06:25
>>814
基本技術は色褪せることなく必ず必要になる。だからこういう書物は必要なのだ、

816:デフォルトの名無しさん
08/10/15 06:29:47
>>815
必要なのは同意だが、もっと早い時期に出版されていても
良かったはず。
この手の技術の需要はかなり昔からあったと思うが・・・

817:デフォルトの名無しさん
08/11/15 12:19:40
新しいC++の仕様とか扱ってる書籍って
お勧めありますか?

818:デフォルトの名無しさん
08/11/16 00:41:18
>817
URLリンク(www.open-std.org)

819:デフォルトの名無しさん
08/11/25 21:44:03
>>818
817じゃないけどありがとう

820:デフォルトの名無しさん
08/11/29 22:28:30
いや、これ規格の draft だよ?
まだ draft なのに書籍もへったくれもあるかよ、くらいのつもりで書いたのに。
まあまず最初に参照すべき文章ではあるだろうけどさ。
↓辺りを読んで、ある程度概要つかんでからの方がいいかもしれない。
Wikipedia項目リンク

821:デフォルトの名無しさん
08/12/15 01:03:55
>>820
ありがとう.型推論とか導入予定なのか....wktkすぐる

822:デフォルトの名無しさん
08/12/15 02:11:37 BE:762753773-2BP(22)
韓国がサーバー攻撃してきたっぽい
vipperが凸したんだけど韓国以外のIPがはじかれて困ってんだけどなんか良い手ない?
串とかはもう試したけど田代しか無理だからあまり効果がなくってね
ここが現行スレ
スレリンク(news4vip板)

823:デフォルトの名無しさん
08/12/15 18:25:19
韓国に攻撃されてるぞwwww7
スレリンク(news4vip板)

世界フィギュア選手権で浅田真央が韓国を破り金賞に輝く

韓国人が腹いせに2ちゃんねるを攻撃

vipper今夜19:00 反撃凸 ←いまここ★

目標
URLリンク(www.dcinside.com)

Dcinside(ディーシーインサイド)は、韓国の電子掲示板サイトである。
デジタルカメラの情報を提供する専門サイトとして有名になりつつ、だんだん人が集まり韓国最大のコミュニティーサイトとなった。 韓国の2ちゃんねるともいえるサイト。
2004年に2ちゃんねるのサーバをDoS攻撃したことで有名。


824:デフォルトの名無しさん
08/12/17 14:28:41
結局おまえらDcinsideの奴ら同類か

825:デフォルトの名無しさん
08/12/18 02:35:19
反日韓国人、反日中国人、嫌韓厨&嫌中厨、は同レベルだよ、昔から。

日本文化に興味のある外国人の数は、言うまでもなく中韓文化へのそれよりずっと多いのだけど、
その人達が、日本への興味ゆえに「嫌韓厨&嫌中厨の行動だけ」見つけることが結構あって、
「なぜこの日本人達はこんなに差別的で、韓国や中国を中傷するのか?」とか言ってたりする。

こっちは当然、韓国や中国の反日教育・活動の存在を、慣れない英語で説明するわけだけど、
いくら説明したところで、目の前の嫌韓厨&嫌中厨は明らかに「反論」ではなく「中傷」「攻撃」をしてるわけで、
ちゃんと説明できてようやく「同レベル」というところまで持って行けるだけなんだよね。
ただ興奮したいだけの嫌韓厨&嫌中厨は、この「味方から失っていく」怖さがわかってない。

826:デフォルトの名無しさん
08/12/18 08:56:11
さすが、C++の上級者は言うことがちがう

827:デフォルトの名無しさん
08/12/18 12:16:50
>>825 目の前の嫌韓厨&嫌中厨は明らかに「反論」ではなく「中傷」「攻撃」をしてるわけで、

被害妄想乙

828:デフォルトの名無しさん
09/01/15 20:41:30
結局おまいらModernC++は理解しているのか?
しているならの有用性を400文字以内で教えてくれ!

829:デフォルトの名無しさん
09/01/15 21:03:59
>>828
すんごい。

830:デフォルトの名無しさん
09/01/15 21:21:44
>>828
まずお前から

831:デフォルトの名無しさん
09/01/15 22:13:11
さすがの俺も830はおかしいと思う

832:デフォルトの名無しさん
09/01/16 01:20:25
まさか4文字で教えるとは

833:デフォルトの名無しさん
09/01/16 20:03:14
400文字というのがNUL文字含むかどうか悩む

834:デフォルトの名無しさん
09/01/16 23:24:48
NUL文字って何?

835:デフォルトの名無しさん
09/01/17 01:02:57
>>834
初心者向けのスレへ帰れ。

836:デフォルトの名無しさん
09/01/17 07:37:28
>>835
皮肉もわからんとはな

837:デフォルトの名無しさん
09/01/17 11:21:53
>>836
まさかとは思うけど、
「NULLの書き間違いだろ?」と書いてるつもりなの?

本当に初心者?

838:デフォルトの名無しさん
09/01/17 12:54:51
妖怪ぬるりひょんの仕業じゃ。くわばらくわばら

839:デフォルトの名無しさん
09/01/17 14:15:42
>>837
NULってCでの定数じゃねーか
NULL文字だろ?w

840:デフォルトの名無しさん
09/01/17 14:26:48
>>839
逆だ。NULLはc/c++の定数で、NUL文字はAsciiで規定されている文字コード名だ。


841:デフォルトの名無しさん
09/01/17 14:33:04
>>839
いいから、初心者向けのスレへ帰れ。

842:デフォルトの名無しさん
09/01/17 14:36:07
なんか香ばしいのがいるな
839みたいな奴が業界に入ると思うと虫唾が走る

843:デフォルトの名無しさん
09/01/17 14:48:47
どっちも存在するっていうか
NULとnull文字じゃ少し意味が違う


844:デフォルトの名無しさん
09/01/17 14:58:32
なんかずっと初心者スレよりしょぼい話題を繰り返してるなおまえらwwwwwwww

845:デフォルトの名無しさん
09/01/17 17:00:48
まあ、そうだな。

846:デフォルトの名無しさん
09/01/17 18:28:03
それをやさしく受け止めるのが上級者のたしなみ

847:デフォルトの名無しさん
09/01/22 14:10:31
じゃあ初心者っぽいネタで上げてみるか
上級者の皆方相手をしてくれ
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無名共同体に関しては使うことはまず無いとは思うが)

848:デフォルトの名無しさん
09/01/22 17:30:30
>>847
コード並べて
>とか使ってる奴いる?
で他人に通じるとでも思っているのか。

最初のは、if/while/for の内部で変数宣言してるのがポイントなのか?

849:デフォルトの名無しさん
09/01/22 20:46:04
>>848
そうそう。
言葉足らずで済まんかった。
言いたいことは>>848が書いてるとおりだよ。

850:デフォルトの名無しさん
09/01/22 20:59:22
・内部の宣言は等号と間違えることがあるからあまり使ってない。せいぜいcast系ぐらいかね。
・クラス内クラスはアクセス管理に便利。重宝してます。
・プライベート継承よりも包含&インライン関数の方が良いと思う。

851:デフォルトの名無しさん
09/01/23 12:41:08
>>849
局所変数はしょっちゅう使う。特に for。

852:デフォルトの名無しさん
09/01/23 13:06:12
コンパイルできないのがあるじゃん


853:デフォルトの名無しさん
09/01/23 14:18:40
>>850
インナークラスは使うけど無名構造体や無名共同体ってどうよ?
>プライベート継承よりも包含&インライン関数の方が良いと思う。
なじぇに?

>>851
forはよく見るけど別のってあまり見なくない?

個人的に>>847に書かれている機能を使っているのコードを
ほとんど見たことが無い。自分では便利だから割と使うんだけどね。
あとC++って他にメンバー変数へのポインタなんてマイナーな機能が
あるけどアレに関しては見たことも使ったこともないわ。


854:デフォルトの名無しさん
09/01/23 15:47:52
>>853
>メンバー変数へのポインタ
C だと offsetof を使う場面。
複数のメンバ変数に値を突っ込むのに
ループを廻したいときとか、
取り得る範囲が決まっている値から
呼び出すメンバ関数を変えるとか。

855:デフォルトの名無しさん
09/01/23 21:55:00
>プライベート継承よりも包含&インライン関数の方が良いと思う。
○汎用性が高い
 - 同じ名前で一部だけ流用とかも簡単
 - 名前の変更も問題なし
 - NVIにするのも簡単
○余計な関数を導入するリスクが少ない
 Traitsにするのならちゃんと切り離した方が良いと思う。

×オブジェクトがちょっと大きくなる(pimplにしてもポインタ分余計になる)
×コードが面倒

といったところかね。


>forはよく見るけど別のってあまり見なくない?
だからdynamic_castとかでは普通に使うって。MC++Dで紹介されてるよ。


856:デフォルトの名無しさん
09/01/23 23:24:12
>>855
ゴメンifに関しては使うわ。でも他人が
使っているのを見ることがほとんど無いのよ。

継承に関してはなるほどね。
でも、その用途だったら初めからプライベート継承要らなくない?
実際プライベート継承が有用な時はthisを渡してオーバーライド
を使うときや、templateでのシグニチャの移譲用だと思うけど。

857:855
09/01/24 02:25:07
どっかで見たと思ったら、C++狂 Sutter & AlexandrescuのC++ Coding Standardsに概要あったわ。

○呼び出し側コードに影響を与えず、柔軟性に富む
○コンパイル時の独立性が高く、コンパイル時間も短い
○予期しない振る舞いを抑制する
○適用範囲がより広い
○優れた強固さと安全性
○複雑性と脆弱性がより小さい

非public継承を使うのは
・仮想関数をオーバーライドする必要がある
・protectedメンバーへのアクセスが必要
・メンバー変数よりも前に生成&後に破壊
・仮想基本クラスに配慮する必要がある
・空の基本クラスの最適化
・制御されたポリモーフィズムが必要
ぐらいだって。

858:デフォルトの名無しさん
09/01/24 02:28:00
自分の場合、最もprivate継承を使う機会はboost::noncopyableを使うときだな。

859:デフォルトの名無しさん
09/01/24 13:37:51
C++の上級者はWindows GUIアプリケーションの開発でMFCを使いますか?

860:デフォルトの名無しさん
09/01/24 13:53:21
 GUIは、C♯.NETで作って、C++で速度を求める部分をDLLとして作ってC♯から呼び出す。

861:デフォルトの名無しさん
09/01/24 14:13:31
C++/CLIでWPF

862:デフォルトの名無しさん
09/01/24 14:18:21
C++&wxWidgets

863:デフォルトの名無しさん
09/01/24 14:27:41
Qt !

864:デフォルトの名無しさん
09/01/24 14:57:59
そういうことを決めるのは上級者ではないことが多いと思う。
ともかく案件による。配布の問題もあるし。

865:デフォルトの名無しさん
09/01/24 15:07:41
オラ、おまいらここ行ってマイナーな奴を楽しんで来い。
スレリンク(tech板)

866:デフォルトの名無しさん
09/01/24 15:46:39
誰も反応してくれないけど、boost::any用のMC++D風マルチメソッドを実装してみました。
(実装)URLリンク(cvs.sourceforge.jp)
(使い方)URLリンク(cvs.sourceforge.jp)
一応、boost::any以外でも使えるように汎用化しています。
#下半分がboost::anyをこのマルチメソッド用に最適化したクラスね。

まだ使い込んでないから何とも言えないけど、なんかヤバそうなところある?


867:デフォルトの名無しさん
09/01/24 15:48:46
>>866
さみしいからて出張してくんなよ、素にもどれ

868:デフォルトの名無しさん
09/01/24 16:02:24
スレ違いじゃないからいいじゃない。あっちは誰も相手にしてくれんのよ。
けっこう適当に作ってるので、変な落とし穴にはまってないかけっこう不安なんだよね。


869:デフォルトの名無しさん
09/01/24 16:30:56
なんで反応が無いんだろうねぇ。
こういうの好きそうな人っていそうだけどね。
みんな今忙しいのかな。

ちなみに俺はそういうのは Excel とかで管理するから興味ない。
バリデータ書くにも楽だし。

870:デフォルトの名無しさん
09/01/24 16:51:54
Excel(笑)

871:デフォルトの名無しさん
09/01/24 17:10:21
>>868
それはなんなの?

872:デフォルトの名無しさん
09/01/24 17:32:32
マルチメソッドという便利ツール。実行時にオブジェクトの種類に応じて実行するメソッドを変更してくれる。
あらかじめ関数オブジェクトを作って登録しておく必要があるのが面倒だけど。

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:デフォルトの名無しさん
09/01/24 17:35:03
ただのポリモーフィズムとどう違うの?

874:デフォルトの名無しさん
09/01/24 17:35:14
あっとこれを忘れてた。
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");
}

875:デフォルトの名無しさん
09/01/24 17:36:10
バグってた…… ×m(a) -> ○m0(a)



876:デフォルトの名無しさん
09/01/24 17:39:23
>873
普通の多態だと引数の実行時多態ができないけど、これだとできる。
さらに関数オブジェクト自体の多態もできるように作ってみた。


877:866
09/01/24 17:46:30
boost::anyって、データを処理しようとするとデータの中身が何かを知らないといけないから、
けっこう不便なんだよね。
boost::variantだと(visitorを活用して)中身を知らなくても処理を行えるようにしているので、
これをboost::anyに応用できないか、と思って拵えたのが>866


878:866
09/01/24 17:48:51
>872はバクってるな……面倒なのでサンプルはこっち見て。
(使い方)URLリンク(cvs.sourceforge.jp)


879:デフォルトの名無しさん
09/01/31 16:14:29
>>878
みんなの現場はそういうの使わしてくれるん?
うちはboostも無理っぽいのだけど

880:デフォルトの名無しさん
09/02/05 19:44:31
マ板でやれ

881:デフォルトの名無しさん
09/02/05 23:04:39
最終的にboostを目指すんだ


最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5266日前に更新/170 KB
担当:undef