【初心者歓迎】C/C++室 Ver.84【環境依存OK】
NG推奨:半角にして登録してくだい ◆QZaw55cn4c ◆0lBZNi.Q7evd /tech/1313183984/
>>2 に追加
NG必須:半角にして登録してくだい
hoge
片山
hogeは日本の美しい表記です。それを否定するのは非国民
HOGEってのはキモいウニユーザーの イメージがあるな。 奴らは一般人と会話するときにもHOGEを 使うから困ったものだ。
大昔、日常会話の中で「ピー syntax error!」と叫ぶ人がいた。 今は絶滅してると思う、たぶん。
キュンキュンキュン! キュンキュンキュン! 私のハードディスクに記録しているのでありますっ☆
コンパイラ:gcc version 2.95.3 で int poll(struct pollfd *p, nfds_t nfds, int timout) { fd_set read, write, except; struct timeval tv; nfds_t i; int highfd, rval; ... と言うプログラムをコンパイルしたところ、 poll.c: In function `poll': poll.c:41: warning: declaration of `read' shadows global declaration poll.c:41: warning: declaration of `write' shadows global declaration という警告が出たのですが、 これってどういうときに出るのでしょうか? また、無視してよい物なのでしょうか?
>>8 もともとどこかでreadが宣言されてたけど
オマエがreadを宣言しちゃったから
オマエの方が優先されるけどいいんだな
という警告と思われる
ゆとり世代のわがままっぷりが良く分かる
>>10 なぜそれを「ゆとり世代」とか「わがまま」と感じたのか興味あるね
単なる初心者の陥りやすい間違いという可能性は考えなかったのか?
>>11 幼稚園のお遊戯で白雪姫の役ができるのは「白雪姫の役をやりたい」と言った人全員
という世代なんだよ
>>8 お前、二歳くらいのとき
児童館で他人の玩具を奪い取ったことあるだろ?
>>12 皮肉も理解出来ないアスペか
お前自身に「ゆとり世代」や「わがまま」の要素が強いから反応したんだよ
「投影」という現象だ
man read man write read, write って stdio.h 経由で宣言されちゃうのかしら?
hoge厨が来たわけでもないんだから落ち着けお前ら
ゆとり世代より凄いのが新人類だよな 話を聞くとゆとり世代も完敗するぐらいゆとりだったみたい
新人類って、長州力のアレか
バカが見〜る〜♪ ブタのケ〜ツ♪
hoge厨歓喜
hoge厨とfoobar厨って、どっちがつおいの?
>>22 さぁ、まともな神経してるのはfoobar厨だと思うけど、
まともな神経してれば強いというわけでもない
馬鹿は無敵だしな
基準を何にするかにもよるし
とりあえず情報収集能力や判断力を基準にすればfoobar厨のほうが圧倒的に強い
キチっぷりを基準にすればhoge厨のほうが圧倒的に強い
とりあえずホゲユーザーは一般人と話すときに ホゲホゲのと言うのはやめた方がいい。 一般人に対しては「なになにの」と言うべき。
hoge厨よりhogeアンチ厨のがキモい
アンチhogeを最も効率よく怒らせた人が勝ちです さあ始め
いつもこいつが荒らしてんのか
C++はシンタックスエラーがなかなか取り除けないな C++に遊ばれている
>>29 「basicなんちゃらクラスがうんたら」「インスタンシエートしました」「候補はこれじゃない?」とか参照絡みテンプレート絡みはほとんどわからない‥‥
>>29 まあ腐っても言語だからね。
「C++はシンタックスエラーがなかなか取り除けないな C++に遊ばれている」
を
>>29 が英訳した文をアメリカンに添削させたら
壮大な校正が入るだろう。
並大抵でないのは当然。
「象は鼻が長い」
アンサイクロペディアでC++ページ見たことがある? あれ面白いから見てみたほうがいいよ
テンプレートとオーバーロードそれぞれはまぁ納得できる仕様なのだが、 組み合わせるとエラーの原因がさっぱりわからんものに。
NG推奨ワード: BASIC (半角で)
ほら悔しいw
プログラム板で言語名をNGせざるを得ないという悲しみ
B A S I C
>>39 リンク先のクソコテだけガードしておけばいいよ
【初心者姦ゲイ】C/C++室 Ver.84【姦狂依存OK】
45 :
デフォルトの名無しさん :2013/05/06(月) 13:39:34.42
C++のinline関数と通常の関数の違いを教えてください。
インライン関数は複数のソースに現れても 一つになります。以上
>>45 複数翻訳単位で繰り返し定義された場合、 inline でかつ内容がまったく同じであれば、それが許される。
inline関数の最大の特徴はインライン展開されること 複数のソースに現れるのが許されるのは二義的なこと
ヘッダに定義をかけることだろう 絶対に展開されるとは限らんし
51 :
デフォルトの名無しさん :2013/05/06(月) 13:59:04.90
インライン展開がわかりません。 展開とは、そこにコーディングしたのと同じ、ということでしょうか?
釣り呼ばわりとか(笑) inlineは本来的にはインライン展開を指示するものだろ 実際にインライン展開されるかどうかはコンパイラの最適化の問題であって本質的なものではない
53 :
デフォルトの名無しさん :2013/05/06(月) 14:02:36.80
釣りって言われたらそのまま受け取る奴って何なんだろうな ウザいから消えろってはっきり言われないと分からないのかな
・関数の中身を展開し高速を図ろうぜ ・その性質上定義がヘッダーに書かれる必用があるな ・よし内部リンケージにしよう ・いや、それだといろいろまずい ・よし、ODRだ。複数ファイルでも実体は一つ ←1998年頃 ・もともと展開される保証は無いし、 展開判断はコンパイラに任せた方がよくね? ・じゃあ「インライン」の意味はおまけで 実際はODR対象の為のキーワードだな←今ココ
>>51 例外はあるけどそういう事
static変数の定義だけは例外で、
インライン展開されても変数は全ての箇所で共有される
>>52 inlineキーワードとinline関数は別物だぞ
58 :
デフォルトの名無しさん :2013/05/06(月) 14:09:07.11
展開とは、inline関数で記述したことをそこにじか書きするのと 同じと考えていいでしょうか?
>>58 基本的にはそれで良いよ
ただ本当にインライン展開されるかはコンパイラの判断によるということ
>>56 inline関数の話をしてるのは明白だろ
>>59 いえ、inline関数の話をしているのに
どうしてinlineキーワードの話にすり替えるのですか?
元の質問者はトリップつけてくれよ
62 :
デフォルトの名無しさん :2013/05/06(月) 14:24:37.55
>>57 ,
>>61 キチガイは早く他所に行ってね
スレが荒れる原因になって迷惑です
> ウザいから消えろってはっきり言われないと分からないのかな ⇒
>>63
とりあえず
>>48 の回答は不適切。
釣りかどうかはわかないが
君が不適切と思うならそうなんだろうな。 君の中では。
67 :
デフォルトの名無しさん :2013/05/06(月) 17:46:04.74
winsockでudpサーバを作ろうとしていますが、クライアントが何らかの信号を出さないと、サーバは誰が接続中でデータを配信しているか 分からないのでしょうか、acceptで接続するときの情報をとろうと実験したのですが、 それだとブロードキャストらしきものを拾って使えませんでした
udpで接続中とかは意味がわからないが、サーバがデータを受信したときに 送信元のIPアドレスは分かるだろう
具体的にいうと動画データをudpで配信するサーバを作りたいのですが、配信してるクライアントの情報の取り方が分からないです
クライアントの情報とやらがなにを意味してるのか説明しないと
スレ違い
クライアントはipが取れればと思います
マルチキャストなら無理 ユニキャストならお前が知らないはずはない
うーん、それがudpという感じなんですね
とりあえず、ありがとうございました
>消えろゴミ → ありがとうございました マゾにもほどがある
inlineの仕様は「通常の関数呼び出しするより 中身を展開する方が望ましい(prefer to)」 だからなあ。 ODRが主目的でないのは異論が無いと思うけど インライン展開されると言い切られるとちょっと違う。
ほんとに展開されるかどうかはわからんもんね
多重継承は正義だったのでしょうか?
DMC8.56で、_beginthreadexの呼び出しで死ぬんだがどうすれば良い? 以下コード #define _MT #include <windows.h> #include <process.h> unsigned __stdcall f(void* a) { _endthreadex(0); return 0; } int main() { HANDLE hth=(HANDLE)_beginthreadex(NULL,0,f,NULL,0,NULL); return 0; }
最後の引数が間違ってるからじゃね?
VCだとNULLで通るんだがなぁ unsigned tid=GetCurrentThreadId(); HANDLE hth=(HANDLE)_beginthreadex(NULL,0,f,NULL,0,&tid); これで通った ありがとう
MSDNによると最後の引数はNULLでも良いはずなんだがな??? あと、そのGetCurrentThreadId()呼び出しは要らない筈
?
ああ、最後の引数は関数の返値か。 GetCurrentThreadId()なくても通った。 実装時期が分からないけど、VC6のだとNULLでいいとは書いてないんだな。 平気でNULLにしてたけど。 まあ、DMCだから。
昔はVisual C++でもダメだったので ダミーで用意した変数のアドレス渡してた。 ソースは俺
少なくともリファレンス上は 2003までNULL不可、2005から許容
APIじゃなくてランタイムライブラリなら仕様が変わってもおかしくない だがDMCは10年くらい前で止まってるんじゃないか 今さらDMCを使うくらいなら DMDの方がいいw
Digital Mars何ソレうまいの?
俺はDMMを利用してる
今のdmc遊べるよ? tgmath.h以外のC99で追加されたヘッダファイルあるし 関数も大体揃ってる windows依存部分は10年放置だけどw
>>94 >tgmath.h以外の
何なのその中途半端。
Win32 API使わないならclangでも挿れた方がマシ
いやいや、C99 ってオイ C++03かと思って納得しかけたじゃないかw
あのさ、VS2012ですらC99に対応してないんだから、C99を中心に語るのはやめてくんない? gcc(完全準拠じゃない)とIntel C++(これも完全準拠じゃない)は対応してるけどさ
>>97 14年前の規格すら対応していない
KUSOコンパイラを君が使っていると
いう理由で
他人に変なこと要求しないでくれ。
Cだって2011年に改訂されてるんだから
2世代前の23年前の仕様で物を語られても困る。
>>98 VS2012を捨ててgccを使えと?仕事で使ってるので無理です
>>99 ここはVisual C++スレではないので、Visual C++前提で
話をするのは止めて下さい
>>100 じゃあこのスレは何のコンパイラを使ってる人のスレなの?そこをはっきりさせてよ
>>1 にも書いてないじゃん
環境依存おkなんだからどんなコンパイラだろうがいいだろ
>>102 そうかわかった
まあgccはEclipse CDT入れてるからいいけどさ
>>101 環境を述べた上であれば環境固有の話をしてもいいスレです。
Visual C++と説明した上でC90の話をすることは構いませんが
話の前提をVisual C++の低スペックに合わせる不自由を
他人に要求しないでください
VS2012が低スペックだと・・・?
もろちん
>>105 1990年仕様のままで
1999,2011の2回の改訂に
全く追従してないからな。
Cについては化石だろ?
msとしてはC++使えってスタンスだからな しゃあない
gccとかclangの方がマシとは
でもMSってClangに興味を持って秘かに取り入れようとしてるんでしょ?SP2位で入れて来たりして
>>111 4月に出たうぷだて2には入っていませんでしたよ
>>111 半年の短期採用でどうにかなるもんじゃないだろ
という事は次期バージョンか、それとも有償プラグインかよ
>>99 いまやVC使っている奴よりGCCが圧倒的に多いだろ
VC捨ててGCCにする
>>115 winの仕事でgccって、オマエばかなの?
バカなんだろう
GPLで仕事か 羨ましい(笑)
でも、Visual C++ってC++11のサポートすら中途半端な低スペックだからな 低スペックな奴は低スペックなのが良いのかもな
企業が開発する有償のコンパイラが 2011年9月の規格を2012年に完全に 盛り込むのは難しいだろう。 VC6の時は規格制定から約3ヶ月後の 出荷だったし、不幸なコンパイラだな。
VC++は「みんな使ってるから安心」が最大のメリットなんだよ。 最新規格を追い求める向きはそういう製品をどうぞ。
>>120 細かいことだが前後が逆だぜ
Visual C++ 6.0: 1998年6月
C++第一版: 1998年9月
---おまけ
1999年 C改訂
2002年 Visual C++ .NETでスルー
2003年 Visual C++ .NET 2003もスルー
2005年 Visual C++ 2005もスルー
2008年 Visual C++ 2008もスルー
2010年 Visual C++ 2010もスルー
2011年 C改訂
2012年 Visual C++ 2012またもやスルー
vc糞過ぎる
みんなって言うか、少数民族がじゃない
>>124 仕事の話を趣味の話にすり替えないでください
趣味ならともかく仕事の話ってなると小数派になるんじゃない? 組み込み屋もC/C++使っているんだから で、MSはいまやあんまりVCに力入れてないように感じるんだけど
まるで職業プログラマが全て組み込み屋みたいな言い方だね。
>>126 なんか明後日の方向には力入れてる。
C++/CLIとかC++/CXとかなんかもう訳分からんw
>>126 .NETの時代でしょー
SQL Server + .NETは超楽じゃん
仕様策定者がレファレンス実装を出さないのが悪い
>>128 C++の進化が亀過ぎで、自社で拡張しないといけないんだろう
MS的にはC++にしがみつくのは止めてねって感じかな
Win職業プログラマはMSの導きに従わないと、だんだん食いぱっくれるかも
>>130 参照実装と言えば、
C99のジェネリックって_Genericも無しに
どうやって実現すんだ?と思ってヘッダーを覗いたら
ウンコな実装で拍子抜けしたでござる
インターフェースがしっかりしててそれなりに動けばいいの コンパイラ屋のモチベは下がるかも知れんけどw
C99の似非ジェネリックなんていらねーよ C#のジェネリックの方がよほど使える というかさすがにスレ違いか
そこでどうしてC++とかC11でなく C#になったのた不思議。 第一、Cのジェネリックに対応するC#の仕様は ジェネリクスでなくオーバーロード。
C#のジェネリックはC++のテンプレートとは全然違うんだぜという話をしようとしたが、 これはするとしたらC#スレで話するわ
むしろどう違うととらえてていたのか気になる ・C#では(クラス型は)物理的なインスタンスが一つ。 つまりオーバーロードの解決はコンパイル時 ・そのためTが満たすべき条件をC#では基本クラスで指定 一方C++はコンセプトLite検討中? ・そのためC#は特殊化が原則無い ・でも倫理的なインスタンスの型情報(Tが何型か)は持っている ・C++は型以外の値そのものをパラメーターに指定可 使い勝手はあんまり変わらないような。 仕組み的にはC#は基本クラスの型を使って 実行時解決できるレベルの汎用化だけど C++はコンパイル時に全てが決まるメタプログラミング って点かな。。
今から勉強しようと思いますが CよりC++を学んだ方が良いのでしょうか? 一通り使いこなせるようになるまで それぞれどの程度かかりますか?
Javaでクラスとインタフェースを学んで Cでどれほど危険なプログラムが組めるかを学んで C++を学ぶのがいいと思うよ。
Javaを先にやると、Cのありがたみが わからずに 「なんで何のチェックも無しに落ちるんだ」 「コンパイルエラーメッセージが意味不明」 「おまじない大杉」 などとクソ認定される恐れが大。
初学者は色々と不便な環境を経験しておいた方が 色々と気をつけるようになるのではないかと思う事はある
むしろ特定分野を狙うわけでもないのに CやC++を勉強するのが無駄。 「ワシらは紙に穴をあけて…」と史実を 語られるレベル
ディップスイッチパチパチの人も 時々は思い出してあげて
よしじゃあCの前にまずPL/Iだな
PL/Mとどう違うの?
PL/Mは整数しか扱えんぞ
唐突なんだが、ヘッダファイルの拡張子はテンプレートクラスを含む時が.hppで、それ以外が.hだと 思ってたんだけど、先日C++のヘッダファイルは全部.hppにするのが業界標準だよって言われた。 業界が何を指してるのかイマイチよく分からなかったんだが(てか、サッパリ分からなかったんだがw) 実際どうなんですか?
Boost信者はhppを好む。 業界標準化と言われると微妙だな。
何処の業界かは知らないけど拡張子なんて飾りだよ
業界標準かどうかは知らないけど Cコンパイラでコンパイルすることを(実際にできるできないにかかわらず)全く考慮してないならhppにする また拡張子だけ見て強調や補間のモードを変更するエディタとかあるからhppにしといたほうが便利なときもある
.hppでも.hでもいいから混在はやめてほしい。 業界標準だよと言われたら「お前の中ではな」 と思っておけばいい。
派生クラスを複数生成したら 基底クラスも複数生成されるの? 基底クラスは1つ?
はい
いやどっちだよw
もう少し明確にしてくれ。クラスの定義の話かインスタンスの話か?
クラスの定義が複数生成されるとか嫌過ぎるわ…構文上の規約の問題とメモリの割り当ての理解がごっちゃになってる hppってヘッダーにcppのコード突っ込んでリンカ解決やら楽しようぜ h+cpp だから hpp だカッコいいだろう!! みたいなイメージだ
>>152 クラスのインスタンスを人間にたとえると
基底クラスの顔と派生クラスの顔
つまり2つの顔を持つ人間が1人生まれる
「クラスを生成」はたいていの場合、 発言者は「クラスのインスタンスを 生成」のつもりであることが多い。なので 派生クラスのインスタンスを複数生成したら それぞれに基底クラスのインスタンスが含まれる
自己顕示欲マンセー
複数の翻訳単位で派生クラス(テンプレートクラス)がインスタンスされた場合、 それぞれの翻訳単位で基底クラスが暗黙にインスタンス化される。 だがODRで一つと見なされるのでインスタンスの数を意識する必要はない。 コンパイル時間を短縮したいならexternでインスタンス化を抑制する
基底クラスだけテンプレートを インスタンス化できる? 派生クラスのインスタンス化に 必要不可欠のような
基本クラスだけ? 逆?
最近hoge厨が静かになって 平穏がおとずれたようだ
自治スレか宿題スレに篭っているんでしょう平和が続くといいですね
hoge使いはUnixerに多い。 つまりUnixerは底辺。 msは底辺以下、 coolなguyはMacを選ぶね
Macは負け組
foo bar は?
Linux:キチガイ、変人が使う MS:馬鹿が使う 林檎:自称かっこいい奴が使う 林檎は芸術家jobsの芸術作品だからな
どちらかというとマカーに基地外が多い 何でかわからないけどマカーの基地外率は異常
継承関係が A -> AA -> AAA の時にAAAのインスタンスを 生成するとAAとAのインスタンスも(見えないけど)生成される。 じゃないとスーパークラスのメソッドを呼び出せない。
>>169 馬鹿が自称かっこいい奴を見てキチガイいって思うのは
馬鹿だからしょうがない
Aを継承したB Aを継承したC BとCを継承したD Dのインスタンス中に居るAのインスタンスは単一なのか BにまつわるAのインスタンスと CにまつわるAのインスタンスとの都合2つに分かれるのか こういう話?
152の味噌汁
175 :
152 :2013/05/15(水) 21:19:55.15
インスタンスを生成でお願いします
>>175 派生クラスのインスタンスの数に応じて基底クラスのインスタンスも複数生成される
struct X { int a; };
struct Y : X {};
Y y1;
Y y2;
のとき y1.a と y2.a は別物
つまんねっ
178 :
152 :2013/05/15(水) 23:52:15.81
すいません書き直します 基底クラスAがあり、そのAの派生クラスBがあり Bのインスタンスを何度も生成した場合 B1とB2の基底クラスインスタンスAは A単体なのかA1、A2と増えていくのかどちらですか?
179 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/05/16(木) 00:00:10.27
B1とB2はいったいどこから出てきたんだ 基底クラスインスタンスなんてわけわからん語を作るな コードを書いて説明しろ
こういうのが説明力がないっていうんだよな 会社で煙たがられる存在
基底クラスインスタンスのメンバ変数を書き換えるようなメソッドを用意して実験したらいいんじゃないかな(エスパー)
インスタンスの数=newした数(Java風) だから顔の数じゃなくてボディの数で数えろと
184 :
デフォルトの名無しさん :2013/05/16(木) 01:46:42.40
>>180 何度も生成するから
1、2、3、4、5…
と増えていくんだよ
単体なのか増えていくのか、 質問するより、自分でコード書いた方が早いだろ
こういうのは入門書でよくやる理解しやすいたとえ話でやるより コード貼ってどうこうしたほうが…そもそも自作自演っぽく思えてきたけど
たしかにQZはC++の知識がないから QZの自演ってことはありうる
189 :
デフォルトの名無しさん :2013/05/16(木) 12:34:47.33
派生を生成するために 基底のインスタンスも増えていったらメモリの無駄じゃないの?
>>189 だったら派生せずに新しくクラスを作ればいいじゃん
>>189 派生のインスタンスの中に基底のインスタンスに相当する部分が含まれているのでは?
継承を一体何だと思ってんだか
193 :
デフォルトの名無しさん :2013/05/16(木) 12:46:03.41
派生を複数生成しても 基底は1つになる方法はない?
なんか意味を正しく理解してないのがいそうだからこの流れでは『インスタンス』禁止にしとけ クラスTのインスタンス -> T型の変数 と言い換えとけ
>>193 継承を使わずに基底にあたる型をshared_ptrとかでメンバに持つクラスにしろ
学生は人である 学生を増やしても人のインスタンスが一つになっている状況とは如何に あれか、学生数の水増しかw
>>193 の中では継承はどういうイメージになってるんだ?
>>193 派生を使わない。
基本クラスに持たせようとしていた情報は
グローバル変数で持つ。
派生クラスに持たせようとしていた情報は単独の
クラスにして
みんなでグローバル変数をみる
>>193 コンポジションを使うとか
どうしても継承が必要なのか、継承を使わなくてもいいのかはよく検討すべき
もうAとBとB1とB2を全部 グローバル変数にしようぜ
1.const char* a //*aがconst 2.char* const b //bがconst 3.char const* c //1.と同じ?2.と同じ? 4.const char& d //dがconst? 5.char& const e //どこがconst? 6.char const& f //ドカーン! constが分からんとですorz
くぎゅうぅぅ
>>203 とりあえずconstは(変数ではなく)型に付くと覚えましょう
1.const char* a //const char型へのポインタ(型)(の変数)a
2.char* const b //char型へのconstポインタ(型)(の変数)b
3.char const* c //1.と同じ
4.const char& d //const char型への参照(型)(の変数)d (※)
(※この形を『const参照』と呼びますがconst型への参照(型)の意味であって、型へのconst参照(型)の意味ではありません)
5.char& const e //エラー
6.char const& f //4.と同じ
constは左隣につく、左側がない場合のみ、例外として右側につく、と覚えてる
昔「エキスパートCプログラミング 知られざるCの深層」 というおUNKOな本があって、 型宣言の説明だけは素晴らしかった。 その読解法によると const char* a a is a pointer to "const char" char* const b b is a const pointer to char char const* c c is a pointer to const char (=a) const char& d d is a reference to "const char" char& const e e is a const reference to char→エラー char const& f f is a reference to const char
>>203 1, 4 は例外的だし意味もあいまいだから「使わない」
>>210 それぞれ3と6を使うってこと? それならむしろ自分は逆だなあ。
char const* a は const *a だから、*a がコンスト char* const a は const a だから、a がコンスト って考えると、3, 6は確かに自然な気がする でも、char const& a は const &a だから、&aがコンストかっていうと 何それイミフw って考えると、全然自然じゃない気もする。
constは
・左側で一番近い
・型に付いて
修飾するというのが基本ルール
>>203 の1,4はその基本ルールでは解釈できず
>>208 ,210のいうように例外的に解釈しなければならないから不自然
>>212 はconstが右側の、型ではない*aやaや&aに付いてる、という解釈の時点で最初から二重に間違ってる
なるほどなー。 自分は1,4を使う派だけど、constをどちらの目的で使うかによって、 型名とconstの位置が逆になるので、パッと見て分かりやすいかなー?と思っている。
>>213 なるほど、てことは const の左側に「が」を補って
char const* は char が const
char* const は char* が const
char const& は char が const
char& const は char& が constはイミフだからエラー
って考えると自然?
そんなかんじでいいんじゃない
左側にconstは記憶域指定子(static,extern,...)付きの宣言とぱっと見同じ読み方で解釈できて const初見の人でも受け入れやすい形だから便宜的に導入された記法なのかな int a; // int static int a; // なにかついてるけどint extern int a; // なにかついてるけどint const int a; // なにかついてるけどint int const a; // なにかついてるけどconst、・・・?
>・左側で一番近い 規格の該当個所はよ
>>221 昔は右辺値参照が無かったから
コピーのオーバーヘッドを避けるために
参照にしていたと思われる。
やはりマイクロソフトの設計思想かな マイクロソフトは昔から関数を inに対してoutを与えるものでなく 「正否のステータスを返せるサブルーチン」 ととらえているところがある。 だから戻り値は参照渡しで受け取る
>>224 221はただの例示で本題はstd::stringだからな?
C++の文字列はJavaみたいはimmutable じゃないからねえ。 わざわざインスタンスを生成するより 使い回す方が自然。
今回のconstもだけど、テンプレートやポインタ等の型を コンパイラはどのように構文解析して型を決めるんだ?
その状況で構文規則的にありえる構文候補を列挙してソースとマッチするものに絞り込んでいくんだがそういう話でなく?
*で区切られると覚えれば 別に左とか右とかそんなのどうでもいいんだよ
>>227 1.明らかにシンボル名と思われる所を見つける
2-1.すぐ右に()があれば関数
2-2.すぐ右に[]があれば配列
2-3.すぐ左に&があれば参照
2-4.すぐ左に*または*constがあればポインターまたはconstなポインター
2-5.すぐ左に「型」または「型 const」または「const 型」があれば終わり
3.その 関数の戻り値/配列の要素/参照先/ポインターの差すものは…
→2-1に戻って解析を続ける
ただし途中に記憶指定子とか入るので適当にがんばる
くそみそ
日本語でも英語でも修飾子や形容詞は名詞の前にあったほうが読みやすいってことか
欧米人には
>>209 のC/C++表記だとすぐにそのように解釈できるのかな
同様にC/C++の型表記も自然な表記って感じるのか
俺的には、配列は int arr[10]じゃなく int[10] arrがいいだろって
初めのころは思っていたからな。
Cの文法がint[] a でなくint a[]なのは 使う時の書き方に似せるという 方針だったはず。 だがC++で参照&が登場した際に一貫性を失った。 ハゲは臭いものにフタをするタイプだから 整合性を考えなくて困る。
>>235 宣言と使用の記述の統一ついては
ISO/IEC 9899:1990の時点で既に
宣言 void (*pf)() = f;
使用1 pf();
使用2 (********pf)();
とか怪しかったような。
そんなことよりC#でやろうぜ 文法キモイ言語はポイしなさいポイ
規格の何番の何ページという話は 規格オタ隔離スレでも作ってそこでやれ 初心者スレなんだよここは
有識者が初心者に正しい使用を教える ってよりは、 俺こんなに規格読み込んでるゼーっていう、 自己顕示欲旺盛な人たち同士の会話で、 初心者置いてけぼりなふいんきが 感じられる。
>>237 C#で済むプログラムしか作らないなら黙ってC#使えばいいんだよ
お前がこのスレに居ることが全くの無駄
>C#で済む この言い回しが勘違いも甚だしい。 「CはC#よりすごいんだ!」的な 自分の中で自分の価値を高めようと 必死なのがよくわかる。
Cのが速いんだから当たり前
.NET FrameworkのJITコンパイラの質がどんどん向上してスピードが上がってるんだが セキュリティの更新だけだと思ってるのか?
より低級な部分の処理には(ryですね、分かります
そのうちアセンブラを追い越す性能になるかもなw
>>246 アセンブラ直接弄ると、小数の丸め処理まで制御できるからな……
コンパイラがどこまで解釈できるかの勝負
>>244 それでもC/C++に比べりゃゴミみたいなもんだよ
書き手の技量次第でFAではあるが、平均的なプログラマを前提にすると 手書きアセンブラと今時のC/C++コンパイラってどっちが速いか微妙じゃね?
アセンブラにしたって速度が要求されるコアな部分だけ使うのが 本来の使い方だからね。
ぷっ
速度って言うけどさあ 細かい動的メモリ確保が 壊滅的におそいじゃんC/C++は。 そういうのを自前でメモリ管理すると 圧倒的に速くはなるんだが VM系のnewの代替としては限界がある。
え?malloc freeやら new deleteがめちゃくちゃ遅いってこと? そんな話聞いたことがないが
なにと比べて?
いや、普通の関数呼び出しとか 浮動小数点数演算とか ポインターアクセスとか 自動変数のメモリ確保と比べて
中でリニアサーチを始めてると聞いた
当たり前だろう ヒープを利用するのはそれだけのコストを払っても便利だからなのでは?
>>258 二分木にして適切にサーチする実装くらいあるだろう
>>259 多言語との比較の話を
Cのメモリ確保方法の話に
すり替えないでください
他の言語だと早いのか?
1秒間に100万回ループする所では mallocの使用はためらわれるけど Javaならまあ大きな問題はなかろう
さすがに100満開はかなり厳しいぞよ。 でも体感でJava/C#のnewはC++のnewより100倍は高速かな。 後でまとめて別スレッドでGCするんだから 解放時間入れてもスループットは高いだろう。 スループットだけは。
でもOSのカーネルじゃ使い物にならないよね(プゲラ
コンテキストスイッチしようとしたら ゴミがゴミ整理しようとして 5000マイクロ秒 待たされちゃいました。てへ
>>262 ガベコレ系の言語は
C/C++の自動変数の代わりに
newする設計なのでそれなりに速いよ
ただ適材適所というか、やっぱり
CPU演算メインな処理は
C系じゃなきゃね
たしかに、すべての変数がnewで確保されるのだから Cのように100ナノ秒ちかくかかっていたら使いものに なってないっていう
でもJava/C# は C/C++ に比べて何を省略したからスピードアップを図ることができたの? GC があろうとなかろうとアロケーションという点では同じだとおもうんだけれど
コンパイル時になんでもかんでもしようとしないからじゃね
>>269 マイクロソフトのドキュメントには
「ガベコレ用スタックポインターをずらすだけなので高速です」
と書いてあったような。
つまり確保する領域の中に
「後でそれだけでガベコレできる情報」
を埋め込んでいることになる。詳細は不明
>new Byte[1024] Cが速いという結果を得るための設定ですね? しかもJava1.5って、Sunが.NETを参考に GCを改良する前のやつ?
>>252 .NET のメモリ確保は0埋めするから壊滅的に重いじゃねーか
すまん間違えた microseconds→milliseconds C#あんま速くなかったわ
C#は配列確保がクソ重いからメモリプールしてるわ
ちなみに俺の環境では C++:150マイクロ秒 C#:0.15マイクロ秒
コンパイラによっては内部実装がdlmallocになって、 昔よりかは高速になったって聞いたけど
そりゃそんな細かいメモリ確保したら遅いのは当たり前だわ 流石にそういうのは .NET に分があるのは間違いない
つまりC++の細かいメモリ確保は Java/C#より千倍遅いとふむふむ
C++でもアロケータ自作で乗り切れるが そもそもそんな細かいnewを何度も行うケースは稀だから 意味の無い比較だな
boost::poolをいろいろ使ってみるとか 種類があるから
最適化はやってるんだよね? 確かVCはデバッグ用だといろんな情報を埋め込んでて遅くなったと思うけど
>>284 平均する時に割ってるからいいじゃん
むしろ速すぎて100倍しないと
測れなかったんだろ(プ
>>287 最適化してなかったら死刑だなw
ideoneは最適化しなかったような
エクスプローラへのD&Dを試してみてるんだけど、何故か遅い 一回のドロップ操作完了までに、2〜3秒位掛かるんだけどこれ遅すぎだよな?
>>282 このプログラムのような細かいメモリ確保に対してC++では不可能で.NETが可能な最適化とは?
標準でミリ秒測定できるとはいい時代になったなー
GetTickCount()とか
gettimeofday()を使っていた頃が懐かしい
>>290 エロアニメの見すぎだろ
>>291 最適化の問題ではなく、
そもそもデバッグ用のメモリアロケータは
バッファオーバーフロー検知や初期化漏れ検知のために
色々と小細工してる
>>293 それがC++と.NETの違いだとは思わんのだが。
>>293 じゃあ君のパソコンで比較して
結果貼りつけてみなよ
俺はメンドイからやらん
そもそもメモリ管理の仕組みが
根本から違うんだっての
最適化の問題じゃない
C++使いがガベコレにnewで勝てると
思ってたなんて新発見だわ
>>294 小細工ってのは、特定の値で初期化することで、
初期化のコストが発生する
>>269 フリーリストを手繰る処理を省略して、その分の処理をGC時にやってるようなもんだろう。
総計算量はイコールとは限らんが。
>>295 勝ち負けで言ったら予測不能な
中断を受ける可能性が入るC#は
処理時間にシビアな世界では負けだな
役に立たない
C/C++を使う理由は速度とかじゃない気がする。 .NETは十分速いもん 体感的には.NETが遅いので、C/C++を使うじゃないかとー
C++のほうは個別のdelete終了ごとにアロケータの内部整合性を保たないといけないけど、 GCなら一括でいろいろできるね。
>>299 .NETはPC上でしか動かないからな。組み込み.NETランタイムとか開発されれば別だが。
速度だよ 似たようなアルゴリズムを .NET で実行と明らかに遅い
標準、dlmalloc、tlsf、固定プールとか いろいろ比較してみたいけど、なんか環境用意するのが面倒だな…
あいかわらず無意味な比較してるなあ .NETのコア部分はC++で書かれてるのに
何かが成功するかタイムアウトするまでループって処理で for (int i = 0; i < 5000; i += s){ nanika = suru(); if (nanika == seikou) break; sleep(s); } みたいのが繰り返し出てくるんだけど、何か上手い書き方ないですか? optional r = seikou_or_timeout(5000, [](){ return optional(...); }); こんな感じで書けたら素敵なんですが・・・・・・
WaitForSingleObjectで別スレッドで動かすとか
そこまで書けるのなら書けば良いじゃん
>>305 >>253 の疑問を晴らすには
そんなにおかしな比較とは思えんが、
いつかの空ループベンチよりはマシだ
>.NETのコア部分はC++で書かれてるのに
惨めwww
>>297 >総計算量
アロケーションからリリース(GC込みこみ)までトータルでみてどっちのほうが速いかというのが気になります。
C/C++ の場合は cmalloc() させるとしても、それでも C/C++ の方が速いと、どーしても思うのですが
>>306 win32api ならイベントオブジェクトを好んでいるんですけれども‥‥posix 系はどうしているのだろう?
>>308 ラムダ式が何を返すにしろとにかくoptional的な何かに突っ込んで返すってとこがどう書けばいいのか
よく分からないのと、もしかしたらループ以外に何か上手い方法か、そういうライブラリが既にあったり
するのかな?という期待も込めて・・・・・・
314 :
290 :2013/05/19(日) 13:37:52.62
OLE D&D動作の確認だから、ドロップしたファイルのサイズは1kb程度 これだけで、2〜3秒はやっぱり遅い(Windows XP)。 んで、他のOSで(Windows7)確認してみたら一瞬、OS依存か
>>311 POSIXには条件変数というクソな同期の仕組みがある。
そのクソ仕様はそのままC++11に取り込まれたけどな。
317 :
規制外板にてレス代行依頼中 :2013/05/19(日) 15:13:13.94
すいません。
dup2の動きについて教えてください。
dup2(oldfd,newfd);
でoldfdとnewfdが同じ値の場合、dup2() は何もせず、newfd を返す。
というのが正しい処理だと思います。
そこで質問なのですが、昔の環境だと、
この処理はどのようになっていたのでしょうか?
http://www.freebsd.org/doc/ja/books/design-44bsd/book.html に、(もし、指定された番号の記述子が使用中の場合、 dup2 は、まずその記述子を閉じたのち、 再割り当てします)。
とありますが、
昔の環境だと、dup2(oldfd,newfd)で同じファイルディスクリプタを
指定した場合、どのように動作していたのでしょうか?
>同じ値の場合、dup2() は何もせず、newfd を返す。 >というのが正しい処理だと思います その根拠は?
319 :
規制外板にてレス代行依頼中 :2013/05/19(日) 15:51:35.67
>>319 そのLinuxの方はエラーが無い限りoldを
返すと書いてあるので、エラーが起きたかバグがあるか
BSDの方はエラーがある場合は同様だけれど
エラーが無い場合について言及されていないので
何が返っても文句は言えない
それ以上のことはリンク先のISO/IEC 9945-1:1990
とやらを読まないとなんとも
>>306 C++11ならasyncとfuture::wait_for使うところかな
中断が必要なものにfutureねぇ。 メイン側に待つ以外のやることもないし。 ループ構造なんだから、ループ開始前に 取得した 時刻からの経過時間に閾値を設けて タイムアウトさせる所じゃないの?
>>315 条件変数ってcondition variableのこと?
それならwin apiにもあったような
for ( auto i = 0; i < 3; i++ ) const int N = 10 * 1000; for ( auto i = 0; i < N; i++ ) これらの場合の、iの型の推論はどう行われるの 上のiは0以上3未満だからunsigned 下のiはconst int Nとの比較するからint って感じ?
0はintなのでintです 終了
autoで宣言する意味はないぞ。
ゼロオーバーヘッドさん現る
数値リテラルは型が分かりにくいのでautoにしない方がいい
イテレータはautoが有効活用される場面の1つだし、 >324くらいならautoでもいいんじゃね? と思ったりする
サイズを指定するような定数や ループインデックスに厳密な型の 意識が必要か? むしろautoでお茶を濁したいところ。 実数だけ区別ついてれば構わん。
>>324 のNがintじゃなかったら型の不一致でバグのもとだ
autoよりもdecltype(N)のほうがいいだろう
autoなんてゆとり機能使うの止めて
プログラムなんてゆとり機能を使わずに 紙と鉛筆で何でも処理すべきだな
IT屋はみんなしねばいい お前らがシステム構築して作業効率あげるから ノルマが増えたり仕事を追われる人がたくさん出てくる 社会を破壊してるクズという自覚をもて
出たよ逆恨み
事実だな うちも馬鹿が自慢のツール()作るのが生きがいにしてて 仕事を自動化するからノルマが増えてクソだるい 一度やるとツール使えない現場でも同じ仕事量もとめられんだよカスが
ざまあ
事実だな 馬鹿どもが平日毎日会社いくから俺まd まあ誰も何もしないで他の会社や国だけ効率あがってったら 最終的に全員仕事追われるとは思うがな
visualc++ 2010 express でSendMessage使いたいんだけど spy++がないからどういうメッセージか調べられないけど どうすればいいかな?
342 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/05/21(火) 21:14:51.06
>>341 winspector spy
spyguru
>>341 >spy++がないからどういうメッセージか調べられないけど
まず、何をしたいのかよくわからない
>>341 Professional版買うのがいいと思うよ
無償版のC++でGUIアプリとか無理ゲー
インターフェイスなんか♯でいいだろ
VS2010でC++は確かプラットフォームSDK入れないと ネイティブコンパイルできないんじゃなかったっけ。
ちなみにVSでProが必要なのは仕事でチーム開発する人とか だけだと思うよ。基本機能はExpressで全部そろってる。 SDKとか追加で入れる手間はあるけど無料だし。
>>342-344 VC6ではWM_〜をそのままコピペで使えたけど実力不足で
2010でSendMessageは難しそうです。レスありがとうございました。
>>347 仕事でもVSS使ってるとこなんてごく少数だろ。
それよりもMFC/ATLが必要でPro買ってるのがほとんどじゃねーか?
350 :
デフォルトの名無しさん :2013/05/22(水) 00:06:53.16
TFSは2012でExpressが出たでー
visualassistがないとコーディング時のストレスがやばいからpro買ってる
>>349 Proの評価版を入れてspy++を使えば良いんじゃ
評価版のspy++をexpressにコピペすればspy++が使えるんじゃないのか
評価期間終了したらコピペspy++を消せば良い
そもそもSendMessageするのに なんでSpy++ツールが必要なのかふしぎ
>>346 Visual C++ 2010 ExpressでSDKが必要になるのは
64ビットコンパイルする時。
/ | | | |i :ili、 l | | ヽ ヽ! / ;イ . / | }| ヽ\,__ili_i、 l | l ハ ┼ | ̄| / // _,. イ! | | 「 il|ヘ | | ! |二| | ̄| レ/ / / ; i|l|i|リ ,;iii yz ,z, | | l | | .|_| | ̄| レ / ≠y、li|li|i ″ '´ rぅxヾ寸、 ll ! l | ┼ ノ 」 ./ 气 ` ゙r; ; 、、 ゝ‐′リii小从 |「`ヽ ヘ.{ _ク_ ヽ/ / :ツ / 〃 { \`‐=彡'″{^Yl} | '. ` |__|__| 二|二 / =彡 ''" 丶 「゙弋ー、l i .|__|__| _|_ / / | 、 \ 、 | / | | ヽ | / ィ n r !|l l ;;l :! 人 /イ// _, | || l | | | / \ / . , /⌒ー'⌒ヽ.〈 ! l{ ' Vl | ノ \ /イ / /「「「「「「「「「「「い jll{ Yj| __|_ ヽヽ ./ ,.イ \ ll /!i|i|i|i|i|i|i|i|i|i|i|i|} |i /ノ ,;i }` 、 | ー /,、-'´/ `ヽ{ レ'´ `く ヽl| |i / ″′ ヽ .| ヽー / ヽ ノ ′,;ii/ / | / ト- ==== ''" ,,;iill/ / } | / . ノ /iilil{ / { | ``‐-、._ ≧== 彡l||llx _ イ ∧ / ,勿 ヽ .| _,、-‐'"  ̄`xl|i彡'´ / ハ 〈 彡'´ ノ | | | | \ | | | | \
iniファイル作成時にコメントアウト文を挿入したいのですがどの関数を使えばいいですか? WritePrivateProfileStringで代用しようとしましたがうまくいきません.
APIの範囲じゃ無理
内部設計書って本当に必要なのか? インターフェイスや要件を文書できっちり決めなきゃならんのはわかるんだが メソッドの中の処理を逐一日本語で書かされるのが納得いかない こんな手間かけるならコード直接書いたほうが早いし見やすいじゃん
>>361 まず君の会社の「ナイーヴ設計書」とやらが
他の会社の内部設計書と同じだと思わない方がいい。
一般には利用者から見えないプログラム内部構造や
使用するフレームワークを指す。
フローチャート相当の記述はアルゴリズムが
クリティカルなプログラムだけに限定したい
ってことには同意。
>>361 それはドカタに作業させるのに必要なことだから
ドカタは対人間インターフェースを有する人型機械
その機械は逐一指示を受けて作業する作られている
1.boost::bind(GetWindow, NULL, GW_PARENT); //コンパイルエラー 2.boost::bind<HWND>(GetWindow, NULL, GW_PARENT); //問題なし <HWND>が必要な時とナシでいい時があるんだけど、その違いが全然分からない。 なんとなくstdcallな関数の時は<HWND>が必要で、普通の関数の時は要らない っぽいって漠然とおぼろげに気がしたりしなかったりしてるんだけど・・・・・・・・・・
>>364 テンプレートにVisual C++の__stdcallは鬼門。
void (*__stdcall)(....) と
void (*)(....) は互換性がないから原則無理。
ラムダで囲っておけばたぶんok。
細かいところで間違い訂正。 誤 result_type (* __stdcall pf)(....) 正 result_type (__stdcall * pf)(....) 型は__stdcall pointer to functionじゃなくて pointer to __stdcall functionだからね。
>>365 >ラムダで囲っておけばたぶんok
って具体的にどうするの?
>>366 __stdcall pointer to functionってあるの?
ラムダ式やboost::bindで作った関数オブジェクト?を引数で受けたい時ってどうやるんだろ? boost::bindとかboost::_bi::bind_t<クソ長い文字列がズラズラと>になるんだが、一体どうしたらorz
>>367 [](HWND hWnd, UINT uCmd){return GetWindow(hWnd, uCmd);}
こんな感じ?
違ってたらごめん
>>368 template<typename T> R func(T fun)
で何か不満?
Tが全角は不満だな いくら規格で許されるとしても template<typename KUSO長い文字列> void test(KUSO長い文字列 fun){} コンパイル通った…
UTF-8は便利だよな MS932にしないとエラーが出る環境もあるけど
Windowsで他のアプリの通信状況をみたいと思っています。 winpcapを使うのが簡単かと思うのですが、心の隅に、Windowsの 標準機能でパケットをモニタできる機能があったような記憶が あります。ご存知の方いませんでしょうか?
>>374 Microsoft謹製のパケットキャプチャもあるけど、WireSharkに慣れた方がいいと思う
Wiresharkは結局WinPcapを使ってるに過ぎないし、プログラムするにしても C/C++じゃなくてLuaしか使えんが? Windowsの標準機能だけでやるならRawSocketをPromiscuousモードで使えばいい。
>>374 は
>アプリの通信状況をみたい
だけだろ?
頭おかしいの?
>>377 つまり、C/C++とは関係なく、Windowsで他のアプリの通信状況を見れる良いアプリない?って尋ねているってことか!
それをC/C++で作りたいけど、どうすれば良いですかって聞いているのではないのか?
「通信状況をみたい」というのが単に人が目で見れればいいって意味なら そもそもスレチなわけだが。 だいたい、だとしたらwinpcap使ってどうやって見るんだよw
C使いはアスペが多いな
>>359-360 混ぜるのも面倒なので書き込み時はファイルポインタ使うことにします
ありがとうございました
>>381 君がC使いのいうことが理解できず、君のいうことをC使いが理解できない
というのならば、C使いという集団がアスペでコミュ障の集団と考えるより、
君単体が無能でコミュ障だと考えたほうが合理的ではないだろうか。
>>383 アンチC使いはそうやって
アスペのフリをするんですね
このスレに張り付いてC/C++のネガキャンやってるキチガイには何を言っても無駄
これだけアスペが多いと、顧客要件をヒアリングして システムを提案することなど最早不可能に近い。
そういう面倒な仕事は上司をこき使ってやらせるから 楽しいプログラミングだけやればよい
クルッ . ハ,,ハ ミ _ ドスッ . ( ゚ω゚ )彡―─┴┴─― * * * \ / つ お断りし / ハ,,ハ * * \ 〜′ /´ └―─┬/ ( ゚ω゚ ) お断りします * ハ,,ハ * \ ∪ ∪ / / \ * ( ゚ω゚ ) * .\ / ((⊂ ) ノ\つ)) * お断りします * . \∧∧∧∧/ (_⌒ヽ * * < お > ヽ ヘ } * * * < の し 断 > ε≡Ξ ノノ `J ────────────< 予 ま わ >──────────── . オコトワリ < 感 す り > ハ,,ハ ハ,,ハ .ハ,,ハ <. !! > ハ,,ハ . .( ゚ω゚ ) . ( ゚ω゚ ) ( ゚ω゚ ) /∨∨∨∨\ ( ゚ω゚ )<お断り .ハ,,ハ │ │ │ / .\ します>( ゚ω゚ ) ,(\│/)(\│/)(\│ /. \ / ♪お断りします♪ \ / ハ,,ハ ハ,,ハ .ハ,,ハ ハ,,ハ\ . ( ゚ω゚ ) ( ゚ω゚ ) ( ゚ω゚ ) ( ゚ω゚ )
上司がまるでタレントのマネージャのように 甲斐甲斐しくいろんな雑用するんだよ それなのに上司のほうが給料安いんだよ
390 :
デフォルトの名無しさん :2013/05/30(木) 12:45:07.29
∧,,∧ <ヽ`∀´> < 生粋の日本人ですか? / ヽ | | | | | | | | || || し| i |J=二フ .| || ; | ノ ノ ・ .| .| ( ; / |\.\
>>389 ふかたちをかためるかめのどりょくをしろ
>>389 管理職は社畜だからな。
無給でも働け。
画面とファイルに同じ内容を出力したいとき、 ofs << cout << 123; みたいなことは出来るんでしょうか?
無理
いやできる
>>393 ofs.copyfmt(std::cout);
std::cout.rdbuf(ofs.rdbuf()); とすれば
coutに書き込んだ内容がofsに出力される(リダイレクト)
ただしtieのような2箇所に出力を分岐する方法はないので自分で関数を
書くしかない
stream_dispatcher ofs2; ofs2 << ofs; ofs2 << cout; ofs2 << 123;
.
>>397 あのさぁ、入門書読んだくらいでいい気になって糞コード書くのやめない?
そんなクソコードか?
>>393 に対するすげーまっとうな回答だと思うけど
どちらかというとiostream自体がハゲの壮大な糞
入門書すらちゃんと読んでないと
>>396 のような
糞質問が飛び出す
>>401 >>396 はC++標準ライブラリの§13.10.3、P612に書いてある内容だぞ
そういう内容を糞呼ばわりするのか
ここは初心者歓迎ですが、初心者質問禁止スレです
>>403 C++が糞って言いたいんじゃない
tieじゃなくてteeの間違いのような・・・ それはともかく複数のデバイスに一度に出力する場面って組み合わせが爆発的に 増大してしまうから、普通に並べて書けばいいような気がする
ふんふんなるほど・・ でっていうwwww
>C++標準ライブラリの§13.10.3、P612 初犯、二版、三版を確認した。全く違うページだった。 何を見て言ってんの?
初心者は初心スレ行けよバカチョン
>>409 アスキー「C++標準ライブラリチュートリアル&リファレンス」
シラネ。
お前が買った本を世界のみんなが読んでる
前提で話をされても。
>>410 お前が読んでる本もシラネ
こういう話になるんだけど
お互い様
>>411 標準ライブラリと言われたからISO/IEC 14882:1998と
2003(2nd Edition)と2011(3rd Edition)を見たんだけど、
仕様書読まないの?
仕様書以外の文書を、本のタイトルも無くページ番号語るお前が
コミュ力皆無であることに変わりはないけどな。
ほら初心者が馬鹿にされて荒らしてるよーwww
>>412 規格票の時はちゃんと規格票って書くさ
逆切れすんなよみっともないww
>規格票の時はちゃんと規格票って書くさ 規格以外の時にも出典を書かないと意味ないのに
>規格以外の時にも出典を書かないと意味ないのに C++標準ライブラリの§13.10.3、P612と書いただろうが それをお前が勝手に他の本と間違えただけ
初心者は去れ!
クックック・・・
ウェーッハッハ!
>>398 素人は黙ってな
とりあえず文句は代わりのコードを書いてから言え
複数のbasic_ostreamを管理するbasic_ostreamを作ればいいじゃん。 と思ったけどリソース管理が汚くなりそうだ。 カスタムデリータの情報を消せる type erasure版unique_ptrって無いですか?
実体不明のstreamと実体不明のデリータでどうやって解放すんだよ デリータをコンポジションしたリソースクラスでも作れば? class resource_with_deleter_base{ 仮想デストラクタ }
「規格票」という用語を用いる人はたいてい労害JIS信者 ところで何で「票」なんだ?
栗じゃおかしいだろ
伝票とかの票だろうね
>>422 shared_ptrをラップ(継承?)してコピーをdeleteすればいいんじゃね?
>>428 shared_ptrのデストラクタってvirtualだっけ?
お前はスマポをさらにポインタで運用するのか?
>>429 たぶんそうじゃないから、それが嫌なら継承せずにラップするか、その他の
小細工を加える(operator new/deleteをprivateにする)とか好きにしたらいい。
あ、operator new/deleteもdeleteでいいや。(privateにするのはC++03までのやりかた)
Unique_ptr<int> tmp(new int); Unique_ptr<X> x(new X(tmp.get())); tmp.release(); Xこコンストラクタがnothrowな時 このコードは安全ですか?
new X(tmp.release())にすべきじゃね
>>435 それはまずくね?
5.3.4p16
It is unspecified whether expressions in the new-initializer are evaluated if
the allocation function returns the null pointer or exits using an exceptio
そのソースだけではXがなにしてるかわからないので潜在的には危険と言わざるをえない
new X(tmp.release()) これマジでだめなの? こんなコードはそこらじゅうで 使われてると思うんだけど
new X(tmp.release()) これマジでだめなの? こんなコードはそこらじゅうで 使われてると思うんだけど
>>440 Xの定義によるとしか言えないかな
bad_allocでリークするかどうかとかそういう事なら気にしなくていい
メモリ足りなければ即落すのが作法だからリークとか関係ない
newがbad_alloc投げたら確実にリークする メモリ足りない場合に落とすべきかどうかはケースバイケースなので 大丈夫だとは言いたくない
世間ではナマポは勝ち組。 C++でナマポを一瞬でも使ったら 例外安全地獄で負け。 ただしオナーニのネタとしては最適。
つまりC++でオナニーすること自体が負け組と言えよう
コンストラクターが例外を出す場合はどうなる? struct X { unique_ptr<int> mem; X(int *p) : mem(p) { ここで例外の可能性アリ } }; operator newがコケた時はコンストラクター前の可能性があるから 呼び出し側で解放する必要がある。 しかしコンストラクターがコケたときは memのデストラクターが解放してしまう。 つまりスマポでないと危険ってこと? struct X { unique_ptr<int> mem; X(unique_ptr<int> p) : mem( move(p) ) { ここで例外 } }; unique_ptr<int> tmp(new int); new X( move(tmp) );
catch して mem.release(); すればいいだけ
スマポは逃げ >X(int *p) : mem(p) これがそもそもおかしい コンストラクションが完了していないのに所有権を移すのは 「失敗したときは元通り」というマナーに反するからね X(int* p) { 例外あるかも; mem.reset(p); } これが漢のトランザクションメソッド
>>447 複数のメンバーがあってどれかひとつが
例外をスローする可能性は無視ですか?
>>449 よく見ろ
> X(int *p) : mem(p) { ここで例外の可能性アリ }
メンバ初期化子での例外の可能性はこの例では存在しない
C/C++はホントにアスペが多いな
スマポに頼り過ぎだからこんなバカな議論が始まる 入り組んだ処理が必要でスマポが信頼出来ないなら自前のライーオブジェクトを作れば良い
C++はゆとり用言語
何がライーだよ ラダブルアイだろ いやアブラカダブラだっけ
ライーオブジェクトってなんだよ
template<T>X* newx(int * p,T && onbadall ) { try { return new X(p); } catch(bad_alloc){ return onbadall(p);} }
>>452 全てスマポにておけば余計なこと考えなくていいのに
途中で引数にナマポを使おうとするからこうなってんだろ
>>434-450 が理解できないとはかわいそうな奴
スマポ使いには驚くほどカスが多い 簡単なメモリ管理も出来ないからいたるところでミスをおかすチームのお荷物になる ツールやライブラリが充実してない環境での仕事を任せられない
と老害が申しております 例外安全とか知らなさそう
例外禁止ルールでも作ってんじゃねーの Googleみたいに
スマポ嫌いには驚くほどカスが多い 簡単なライブラリも使えないからいたるところ低信頼コードの手書きを繰り返すチームのお荷物になる ツールやライブラリが充実している環境なのに仕事を任せられない
と老害が申しております 例外安全とか知らなさそう
exception禁止令があることを理由に googleを無能集団呼ばわりする人がいますが どう思います?
頭がおかしいからスマポを使わないと生きていけないんだろうな
いやスマホを使うと頭がおかしくなる、だな マイクロ波は細胞を砕くから、脳に悪影響を及ぼすという警告は携帯の時代からあった にもかかわらず、企業が売ったから安全だし買った、みたいな宗教観を持っているのがスマホ利用者
ガラケも大差ない 世界から電話を破壊すべきだ そうすれば無駄な呼び出しもなくなり平和になる
俺はずっとPHS スマホのような事はタブレットで十分
結局、new X(動的確保リソース) のエラー処理は以下の理解でFA? ○スマポで渡す場合: エラー時は所有権が移動した場合に限りコンストラクタで解放される。その場合 副作用があることが注意点 ○ナマポで渡す場合: エラー時にコンストラクタで解放せず呼び出し側で解放する。メンバがスマポの場合、メンバイニシャライザで渡してはならない。new X(tmp.release())はauto
function-try-blockの使いどころがわかりません どういうときに使うの?
あれは全く使わないから要らないですよ
豆知識を披露したい場合に使う
コンストラクタで使うとメンバ初期化子内で例外出た時にcatchできるけど どこまで初期化できたか分からないので対処のしようがなくあんま意味が無い
コンストラクタの場合、メンバの破棄も終わってるしログを出すくらい? 普通の関数の場合、自動変数のデストラクタの例外を握りつぶしたいとき?? デストラクタの場合、何となく文法で許可してみた??? 結論、要らない。 だいたいメンバにアクセスできるけどしたらundefinedって何だよ
>>470 一般的な C++ プログラムは int main(int argc, char* argv[]) try { ... と始まります。
int main() { try { ... } catch (...) { ... } } と int main() try { ... } catch (...) { ... } って何か変わるの?
>>476 前者はreturnが無くてもOK。
後者はcatchの中にreturnが無いとundefined behavior。
本当にそれ以外の違いが思いつかない。。
サンプルプログラムでutf16を扱うには L"ほげ" とありますが、Lとは何をincludeすれば使えますか?あとこれを表示するには printf("%lc",L"ほげ"); であってますか?
ほげとか言ってる時点で無理
ざわ…ざわ…
だめでした utf16文字列がascii文字コードで扱える文字ばかり扱っているものと仮定して (つまりアルファベットのみ使っている) 変換する方法はありますか?
>>479 >utf16を扱うにはL"ほげ"
いいえ。それはVisual C++固有の仕様です。
UTF-16は u"糞文字列" と掻きます。
LもUも文字列リテラルというトークンを構成する
ものなので、特にインクルードはありません。
<clocale>と<cwchar>をインクルードして
std::setlocale("", LC_CTYPE);
std::wprintf(L"%s\n",L"死ね");
とするのが良いでしょう。
484 :
483 :2013/06/02(日) 18:30:08.18
setlocaleの引数間違えました。逆です。
ありがとうございます ですが::OutputDebugStringへの出し方がわからなかったので、結局 for(unsigned int i = 0 ; i < size_in_byte ; i++) {
::OutputDebugString("%c",((char*)utf16)[i]); } として強引に出力しました 本格的に必要になったらまた考えます
解決したようで よかったな もう二度と来るなよオマエ
これはひどい やはりホゲ脳にはちょっと難しかったかな…
あまり知られてないマニアックな 文法を知りたいです こんなのコンパイル通るのかよ って例を教えてください
operator()をオーバーロードして、test(0)(1)(2)(3)(4)(5)(6)(7)(8)(9);とか? 最初見た時なんじゃこりゃ?と思った
1[a] = 100;
>>489 IOCCCの投稿作品でも読めばいいんじゃね?
>test(0)(1)(2)(3)(4)(5)(6)(7)(8)(9) SUGEEEE!
姉妹スレより。なんかJavaみたい 703 デフォルトの名無しさん sage 2013/05/03(金) 17:43:18.34 8.4.1p1-2ではvirt-specifierはtrailing-return-typeの後。 なので順番はこんな感じの筈。 [[noreturn]] inline virtual auto test() const volatile && throw() [[noreturn]] -> decltype((void)0) final override try { std::exit(0); } catch(...) { }
あ、無駄に継承してしまってた 継承いらないや
何でこうなるんだ、と思って調べたら a->b が (a.operator->())->b になるのね。 勉強になった。
ポインタに行き当たるまで operator-> を実行し続けるという仕様 意外とマイナーな仕様だと思う
operator-> でスマポを返しても機能するのはこの仕様のおかげだから スマポを使ってる人には常識
>>501 別に
std::cout << a << b << c << d;
と同じ事やで
>>505 ガッ
NULLを使ったメンバ呼び出しって規格上どうなんだっけ
>>507 たぶんNGだろうね
offsetofマクロが許されてこれがNGなのは
釈然としないけど
sizeofは「式を評価しない」からOK
Java使いが演算子オーバーロードが汚い という理由がよくわかったわ
get/setが汚いのに比べれば
シーシャープが至高って事はわかった
c#のプロパティ機能は、確かにちょっと欲しい。 演算子のオバロでどこまで行けるか…?
auto atama = [](){ return 1; }; auto mune = [](int i){ return "tekitou"; }; auto ude = [](moji s){ return true; }; auto asi = [](bool b){ return robo; }; auto robo = gattai() + atama + mune + ude + asi; auto daimajin = robo(); って書けるようにしたいんだけど、テンプレートを黒魔術的に駆使してなんとかならないですか? 要は、a(b(c(d(e()))))っていう数珠繋ぎな呼び出しを、abcde = a + b + c + d + eって感じ で事前に用意しておいて、abcde()で呼び出したいってことなんだけど・・・・・・・・・
式テンプレート使えば?
黒魔術でもなんでもなく普通に各パーツと中間の合体状態をクラスとして定義してoperator+をオーバーロードするだけじゃんか
ラムダだとダメな気が。
いちいちautoと書くのは何か意味があるの? autoなんてもう20年以上前からオブソリートなキーワードだと 思ってたけど。
ぷらーん 釣りとしてイマイチ
>>520 ぷらーんて、食い付いたんじゃないのかよw
一瞬だけ出来そうな気がしたけど、よく考えたらこれ無理だろ? a + bの時、aからbの型を知る術がない。引数に取れねーよ('A`) combineみたいな関数作って、combine<P, C, R>(func1<P(C)>, func2<R(C)>) -> func12<P(R)> みたいに繋いで妥協するしかないだろう。
C++がそんな関数型なわけがないと言って出て行った友人が 5分後scalaかぶれになって帰ってきた。死にたいorz
scalaってなーに
砂糖を入れすぎたJava
>>524 読みこなせなくて何がどうなってるのか分からない。オレサマダメスギワロエナイ
529 :
デフォルトの名無しさん :2013/06/06(木) 13:44:01.05
531 :
デフォルトの名無しさん :2013/06/06(木) 14:03:52.86
>>530 私の頭がどう悪いのかkwsk解説お願いします。
プログラムの説明が一切無く「コーデックの数がゼロと出てしまい」とだけ書くのは低脳。 まずこのプログラムが何をするものでどういう結果を期待したのか書け。
533 :
デフォルトの名無しさん :2013/06/06(木) 14:29:43.11
>>532 それでは解説します。
>>529 のプログラムは、真っ黒な動画ファイル(wmv)を10秒間分出力するテスト用プログラムのつもりで作りました。
複数の仕様を選択すれば少なくとも1つ以上のコーデックが検出されることを期待しましたが、
その期待に反してコーデックが1つも検出されず、結果として出力ファイルのサイズは0となりました。
どこが悪かったのかよろしくお願いします。
>>532 ど素人かお前。
コーデックのこととか一切しらん俺がざっと見ても、
> pCI->GetCodecInfoCount(WMMEDIATYPE_Video, &nCodecs);
でコーデックの数を取得できるはずで、
実行したら
> printf("nCodecs=%d\n", nCodecs);
で0と表示されて、
> for (int i=0; i<nCodecs; i++) {
の内容が実行されなかったんだが、どこか悪いのかという質問だとわかるが。
まあ、俺は答えは持ってないわけだが。
そうすると GetCodecInfoCount() の戻り値を捨てているのはナゼ? という当然の疑問が出てくるわけだ
>>535 なぜも何も、エラーチェックするという習慣がないからでしょ。
まずは各APIの戻り値を調べて、正常終了しているかどうかを確認するというのが最初のアドバイスか。
もしかして上で wmvファイル を指定してるけどその中身で結果が変わる処理か 自作のデータでほーまっと不正とかいうオチか
>>530 笑った。でもそれが最大の悪い点だろうな。
>>535-536 原因究明の糸口さえ見つけられないレベルの脳ってことなのか
適性が無いとこんな感じになるのかな
540 :
デフォルトの名無しさん :2013/06/07(金) 02:50:49.36
>>536 エラーチェックしても無駄でした。
>>539 ハードや開発環境に欠陥があれば対策の施しようがない
てめえの脳みそで環境のせいにするのは100年早い
頭に欠陥があれば対策の施しようがない COMの初期化を忘れているだけ
543 :
デフォルトの名無しさん :2013/06/07(金) 03:32:44.63
c++で書いたコードをjavaから再利用する方法を教えてください
545 :
デフォルトの名無しさん :2013/06/07(金) 06:33:06.95
>>544 プログラムによるけど、文法もコーディングスタイルも違うから再利用は現実的じゃない。
多重継承とかjavaではサポートしていないし。
C++→Javaをやりたいなら自力で翻訳するか最悪再設計という流れになる。
>>545 ネイティブのロードモジュールをjavaから利用的なことはできないのですか?
>>546 それ、コードの再利用って言わないと思うが...
まあいいじゃん そんな細かい事は 俺はそうしたいんだろうなと思ったよ java c++ 呼び出し でググれ
549 :
デフォルトの名無しさん :2013/06/07(金) 08:17:32.99
すんませーん質問さして下さい。 まずうちのコンパイラはVS2005です。 で、久々C++でコード書こうとおもってある程度のクラス作ったりして std::wstringを使って文字列入れたんです。 で表示させようと思ってstd::wcoutを使っても表示されないので ローケル設定してないせいか?と思ったんですが。 そのローケルの設定方法を忘れてしまいました。 C言語の方のローケルの設定方法はわかるんですが、C++の方の設定方法って どうしたらよいか、どなたかご教示ください。
>>544 javaでもnative修飾子はあるけど
それは、javaのプログラミング知識が結構豊富で
かつC++で書いたそのコードもよっぽり良いコード書で利用価値
があるなら良いけど、まぁ、そこまでの知識や技量があるなら
逆にこんなところで質問なんかしてるわけは無いな
>>549 VC++2005のはいろいろバグがあった記憶があるな
以下、昔のメモだからあってるかどうか知らんけど
全体の設定はデフォルトのまま"C"にしておく。2005のバグ。
std::locale::global(std::locale("C"))
個々にロケールを設定する。
std::wcout.imbue(std::locale(""))
std::wcin.imbue(std::locale(""))
質問させてください。CRTPで基底側で継承側の定数をstaticとして使うことはできないのでしょうか? template<class T> struct A{ public: int get(){return T::value; }// ok double moge[T::value];// error }; struct B : public A<B>{ enum{value = 99,}; }; なんとなく出来ても良さそうなのですが… Aに共通処理を書いて、Bを問題ごとに書き換えたいとき、 Bの定数をAでstaticとして扱いたいのですが…
>>552 template<class T>
struct A{
public:
int get(){return T::value; }// ok
};
struct B : public A<B>{
enum{value = 99,};
double moge[value];
};
こんぱいらさんの気持ちになってかんがえたらわかるかもしれません
>554 この方法で解決はできるのですが、 mogeをAが提供する処理の中で使いたいのです…結局 struct B : public A<B,99> とすることで自己解決しましたが、勉強になりました。 (普通じゃないかもしれませんが) ありがとうございました。
static_cast<T*>(this)->moge(); じゃダメなのか?
>557 そういう方法もあるんですね??勉強になります。 出来るだけBの中身をすっきりしたいという希望もあり、 できればAに含めたかったのです。 virtual経由で、というのも考えたんですが、 数値計算用のコードで、計算時間クリティカルな場所だったので避けました。 そうじゃないならそもそもarrayでなく可変長使うんですが… 初心者なのでいまいちわかってないのですが どのみち要素数がAに伝えられないと Aで計算できないのでダメなのかと…
>558 自己レス、可変長でも計算時間変わんないですね。 あほな事言いました。引数で渡せばいいだけか… なんとなくarrayのように配列数を型情報に押し込めたかっただけです。 ありがとうございました。
>>560 知らなくていいです
むしろ曲芸的コードは知らない方がいい
他人が読めないコードに不可解な優越感を持つプログラマは意外と多いから困る
>>562 学校ならいいんだけど、仕事でこれやられると引いてしまう
漠然とした質問ですまんが メモリ破壊バグってなんでこう全然別の場所、タイミングで発症するんだろうねえ
メモリ破壊だから としか言いようがない
うんまあそうですよね メモリ破壊的なコーディングしてたとして、C++的にはそれが意図的なものか判別できないよね
>>562 何か合理的な理由がある(わずかでも速いとか)場合でも、同義の分かりやすいコードをコメントで付記すべきだよね
>>564 監視係を適切な所に配置するのもぷろぐらまの仕事
ヤバそうなところを嗅ぎ分けられければCなんぞやるべきではない
569 :
デフォルトの名無しさん :2013/06/08(土) 03:49:26.20
別板での質問を取り下げてここに来ました。 Windows Media Format SDK (wmsdk) を使ってwmvファイルを書き出したいのですが、どうしてもうまくいきません。 Visual C++ 2010 を使っています。 とりあえず10秒間無音で真っ黒な画面を書き出したいのですが、どうすればよろしいでしょうか? いくら検索してもちゃんとした解説が見つかりませんでした。 よろしくお願いします。
CG板で質問してた人か もし目的がそれだけなら普通プログラマはSDKとか使わずに 10秒間無音で真っ黒なwmvファイルを用意してコピーすると思うよ
>>570 最終的には自作CGを動かすのが目標です。
572 :
デフォルトの名無しさん :2013/06/08(土) 05:13:58.26
>>573 激しくdです!
>>574 そのスレで何故かボロクソに叩かれました。
自己顕示欲云々とか。
かといって他に妥当なスレがなくて悩んでます。
こうやって無意識にスレを私物化するあたりが 自己顕示欲云々言われる所以では。
駄目出ししてくれなんて無茶ぶりにも応えてくれる良スレ
自己顕示欲さんちーす
579 :
デフォルトの名無しさん :2013/06/08(土) 12:16:30.53
>>569 みたいに何でも無料でできると思ってるゴミは何なの?
検索したから何?
本の1冊も調べられないゴミはプログラミングには不向き。
でもこの業界はそういう奴が多い 優秀な人ほどアスペ気味で他人を攻撃する
現実世界と区別がつかないんですね 馬鹿でしょお前
↑とアスペが申しております
585 :
デフォルトの名無しさん :2013/06/08(土) 16:33:23.24
レスコピペつまんないからやめろ
ウザいよお前 自覚ある?
コピペなら馬鹿でも猿でもできる
590 :
デフォルトの名無しさん :2013/06/08(土) 21:55:12.89
馬鹿でもチョンでもできる バカチョンコピペ
ようこそ、バカチョンスレへ
病名を罵倒に使うのは、病身舞のメンタリティー。
質問なのですが、C++の構造体ってコンストラクタやデストラクタが無くても初期化やdeleteされるのですか?
デフォがpublicのclassだと思ってください
基本的にはコンストラクタやデストラクタが無ければなにもしないのが自動で定義される
クラスと同じ
>>594 何がデフォルトでpublicなのですか?
奴は生き様がpublicなのさ
Cと違ってC++にstructureなるものは無いね
一カ所だけ説明無く出てくるけど、誤記だろうきっと
>>598 struct UNK : ここと base {
ここ
:
};
12.1-6 The implicitly-defined default constructor performs the set of initializations of the class that would be performed by a user-written default constructor for that class with no ctor-initializer(12.6.2) and an empty compound-statement
頭皮がパブリック
>582 >優秀な人ほどアスペ気味で他人を攻撃する 誰だよそれは リーナスか? ジョブズか? ゴスリンか? ハゲか? 日下部か?
ストールマンが抜けてるぞ。 排他的で攻撃的なのとアスペなのは違うな。 純粋にアスペで競ったら日本のkusokabeが圧勝。
>>593 のいう構造体が何をさすものなのか
本気でわからなかった俺はアスペに相違ない
struct kuso { float x; }; new kuso; //(1) new kuso(); //(2) new kuso{}; //(3) kuso().~kuso(); コンパイルは通るぞ。 ただ(1)はxが不定値。
ただのアホの日下部をそこに並べるなよ そういうことするから勘違いするんだよ
本人と直接話してみると、意外に紳士だぞ
日下部をアホ呼ばわりするのは「私は馬鹿です」と告白しているようなもの
日下部は技術は別として人間的におかしい人だから。
「おかしい人」に対して「おかしい人」のように振舞っているだけなように見える 日下部を気に入らない人種ってだいたい類型があるよね、そうだな、お偉いさんタイプとかね、実力よりもメンツを大事にする人とか
日下部って誰?
日本政府お抱えのスーパーハッカーで米軍も恐れる腕前の持ち主 趣味は携帯でコーディング・コンパイルしたプログラムを使ったインスタントハッキング
BPSかよ
>>613 世間に2chが広まる以前、ネットニースという
掲示板に近いメディアに出没し、
独特の人間性で注目された人物。Cが得意。
ウサゲと呼ばれる特にアスペが集まる場所で
猛威をふるった。歴史上の貢献は皆無。
半角カナを使うと >>〓〓〓〓〓 >文字化けしてますよ と律儀に返してくれる人とは別だっけ?
簡単に言うと、C/C++スレに出没する コテハンを全て足したぐらいの 戦闘力を備えた 過去の人物
>歴史上の貢献は皆無。 有名な「はなししって?」のツッコミは彼が元祖かと
それを貢献というならそうなんだろうな...
アスペがかっこいい、許される、 という観念を日本に浸透させた
当時FEPの開発に関与したことがあって、日本語表記にこだわりがあったんじゃない?、
流石C++スレ、おっさんばっかりやw
今時若者がC++を学ぶ必要なんか無い 平均年齢45以上でok
俺は若者だがC++は学ぶ価値あると思うよ 実務で使わなくてもノウハウがあらゆる言語に応用出来る
でも、オサーンになるほど、何故か転用能力が低くなるんだよな。 まんまコピペしかできないと言うか。 応用して欲しいのに、何故か無理やり同じものを使おうとするから、C 系は嫌われるんだよなー。
628 :
◆ZSCoFl63NY :2013/06/09(日) 18:01:28.91
>>623 日本語表記、マイクロソフトに翻弄される程度の底の浅いものだしね
>>628 自分の思った通り動いて、自分が満足している (=問題点がわからない) なら、何の問題もないと思うが?
働いたら負け
>>628 30秒ほど眺めた。KUSOコード
特有の臭さは見られず比較的素直なコード
だがやりたいことを実現するために
プログラムがどのような作りをしているのかの
説明が皆無なのはshine
もう二度と来んな
あと __ で始まる名前を使うな
>コメントアウトがない云々と馬鹿にされたのですが、どこに問題があるのでしょうか? コメントがないんだろ 別に斬新なゲームでもないし
>>628 コメントが無いこと自体は問題ではない。
コメントが無いと作った本人以外には意図が不明な部分が多くある(それなのにコメントが無い)ことが問題。
>>632 30秒ほど眺めた。
KUSOコードなのか素直なコードなのか
どうとでもとれる
説明が皆無なのはshine
もう二度と来んな
あと無駄な改行はさむな
KUSOは全角でお願いします
「コメント無いなどと文句言われましたが どこが悪いの? →「コメント無いshine →「ダメなんですか。。 問題の多くが説明の欠落とわかったわけだが、 そこまでして説明を省きたいのだろうか?
アスペなんだろ
>>638 じゃ、コメントを適度に入れればおkということでFAですね(`・ω・´)
説明つうか一文字変数名の乱舞するコードを人に見せてどうするつもりなのかと
>>637 まあ、そのなんだ、あれだ
誰しもが通る道だから、気にするな
成長すれば良いんだ!
…俺見てないけどな
コテハンとトリップ付きは基地外が多いな
>>641 Cの文法はわかるのですが、コーディングの流儀が今ひとつわかっていません。
いろんなコードを見るしかないんでしょうか。。。
>>642 ・・・・。
>>643 一応そうですが、それが何か
>>640 コードについて聞くなら
コメントをある程度入れないと関数が何をするのか、プログラムの流れが分らんからな
とにかく、ぱっとみて何をしているのかさっぱり分からん。
で、作品についてならプログラム板じゃなくゲーム好き板で聞け
>>646 今度からコメント入れるようにします。
ゲーム関連の板で作品としてどうか訊いてみました。
スレ違いかもしれませんが教えていただけるとありがたいです。 C#でゲームプログラミングのまねごとをしてるんですが GCの発生で処理が止まってしまうことがあります。 C++であればこのような現象がなくなるのでしょうか? それともメモリの解放は同様に時間が掛かるけど いつ解放するかを制御できるということになるのでしょうか?
yes
>>649 ありがとうございます。
そうするとC#でも工夫すればなんとかできそうです。
ちょっと小細工がんばります。
いいこと思いついた。 C++で要らなくなったら別スレッドで 解放すりゃいいんじゃね? コンパクションの処理時間を省略できる
C++だと別スレッドで解放すれば処理が止まらないんでしょうか? C#だとGCが動くと全スレッドが停止してしまいますorz
>>646 ドキュメント読めよ
仕様書とコードに二回説明を書くのは時間の無駄だろ
>>648 C#→GCがある
C++→GCがない
∴C++においてメモリ解放は手動
仕様書に書くのは、SEの建て前 コードに書くのは、プログラマの言い訳
>別スレッドで解放すれば処理が止まらないんでしょうか? 止まらないだろう。 使用メモリをマーキングしたり コンパクションしたりしないんだから
>>640 ちょっと見てみたけど、ループ内で変数宣言は気持ち悪い。
例えば rv_main.cpp 240行目
> for (int i=1; i<8; i++) {
> int t = 20 + 70 * i;
じゃなくて
> int t;
> for (int i=1; i<8; i++) {
> t = 20 + 70 * i;
とした方が気持ちいい。
個人的に。
パフォーマンスにはそんなに影響しないんだろうけど。
いや外で宣言のがはるかに気持ち悪いよ スコープ無駄に長い変数とか許せないだろ
effective C++かmoreにそんな感じの議論があったな で、下のほうが良い場合も当然ありうるが(コンストラクタでコストが掛かるような場合) 大抵の場合、上のものを使うほうが良い、って結論だったと思う ちゃんとは覚えていないが、最適化も効きそうだし
性能は問題になってから考えろ。 意味を無視して変数を使い回したり スコープを広げる奴は島流しの刑。
>>663 > 意味を無視して変数を使い回し
これと
> スコープを広げる
これを
ゴッチャゴチャにして持論を語った気になっている奴が
一番ヤバい
へー、どこにいるんだ? そんなヤバいやつ
グローバルに定義されたplacement newがサイズのみ引数にとる場合、 すべてのリンクされるnewがこれで置き換わるってホント?
>>666 仕様はともかく君の環境では
どうだったのよ?
>>657 なるほど。
やはりC++で作りなおしたほうおが良さそうです。
が、C++を勉強しなければいけません。でもやったほうがよさそうですね。
こうしてまたバカがひとり
>>658 は下の方がいいだろう
上だとtの寿命が紛らわしい
書き間違えたら訂正しろよ 下はオーバー50のジジイの固執 上が人の良心
>>670 > 上だとtの寿命が紛らわしい
どう紛らわしいか、詳しく
コンストラクタにコストがかかる場合は、つい面倒で { Foo foo; for(...) { foo = … } } ってやってしまう。 関数に切り分けるのが一番スマートなのは分かってるつもりなんだけども。
>関数に切り分けるのが一番スマートなのは分かってるつもり 意味を考えずに、機能でなく処理で関数を 切り出すのは初心者までですよ
675 :
673 :2013/06/10(月) 15:47:01.13
>>673 for(...)
{
Foo foo = …
}
って書いても
コンストラクタはループに入る時の 1度のみ
デンストラクタはループを抜けたあとの 1度のみ
しか呼ばれないのではないだろうか。
677 :
676 :2013/06/10(月) 21:23:15.88
>>676 間違った。
ループのたびに両方呼ばれる
>>671 どっちかっつーとジジイの方が変数宣言をブロック先頭に置くことに
拘るんじゃないかと思うが。
20世紀から脳ミソが進化してないジジイは ブロックでなく関数の先頭で変数を宣言します
そりゃジジイというよりドカタだろ
>>666 多分 placement new とグローバルの new のオーバーライドを混同していると思うが、、、
サイズだけを取るグローバル new のオーバーライドは規格で認められている合法行為
>>682 ん?
微妙にポイントがずれてるかな?
まあいいや
>>682 そうなのか
とあるapiで通常のmalloc,newは使うべからず、apiの提供するアロケータを使え
newを使いたかったら、あるクラスでnewをapiのアロケータを使いオーバーライドし、
すべてのクラスはそのクラスを基底クラスにせよってあったんだが
実はnewのオーバーライドだけでおk?
>placement newがサイズのみ引数にとる そりは不正なプログラムなのでは?
あいむ そりー(´・ω・`)
んなこたーない
>>684 それはどうだろうか?
それは環境問題だから、一概にどうとか言えないと思う
個人的には、グローバル operator new のオーバーライドはお勧めできないな
ジジイの見分け方 規格票 合法 最近の仕様では
>>688 ふむ
確かにglobalでnewのオーバーライドは副作用が大きそうであるな
そこさえ気にしなければシステム上問題は無さそうか
まあそこ気にしろって話になるが
>>674 そういや「1関数 数十行まで」ってコーディング規約がどこかで使われていた話を思い出した。
UNIX系だと思うが
最近は行数云々より横幅の方を主張したい。 横は160文字程度までは使え! テキストエディタは縦長とかいう腐った先入観は捨ててしまえ!
金のある開発現場は縦長モニタを使えるけど ない現場は横長モニタしか買えないわけで
人間は横方向の方が視野は広いんだぜ! 金じゃない、金じゃないッスよぉ〜
>>679 後で拡張してスコープが伸びるかもしれないからあらかじめ最初に書けって言われた時にはこの会社まじヤバイって思ったわ
>>696 のおつむがうまく動作してないんだろう
長いからその先を10行以内で説明しろよ
>>697 >長いからその先を10行以内で説明しろよ
bcc32 のメモリーリーク検出機能はうまく動作しなかった。
>>698 使用契約を破っていつまでも使っている犯罪者が何を言う
700 :
697 :2013/06/11(火) 18:40:11.87
>>698 そういう端的な説明は嫌いじゃないぞw
でもそう判断した理由を10行以内で
教えてくれないか?
>>696 特定の alloc/free を行いたいなら
nothrow みたいにダミー引数をとる new/delete を定義するといいね
>>696 >new[] したものを delete [] せず、delete する
そりゃundefined behaviorじゃねーの?
メモリリーク検出がうまく動かなくても
仕方ないだろう
MinGW環境です。 標準入力から文字列を読み取るプログラムfoo↓ int main(){ TCHAR buffer[1024]={0}; while(_fgetts(buffer,1024,stdin)!=NULL){ if(TCHAR* p=_tcschr(buffer,'\n'))*p='\0'; MessageBox(NULL,buffer,NULL,MB_OK); } return 0; } に対し、名前に環境依存文字を含むファイルを持つディレクトリ内でdir /b | fooとすると、 環境依存文字が?として表示されてしまいます。 正しく表示するにはどうすればよいでしょうか。
704 :
703 :2013/06/11(火) 22:47:28.91
追記です。fooはUNICODEビルドで、コマンドプロンプトはcmd /uで起動しています。
ロケールの設定忘れ? #include <locale.h> int main() { setlocale(LC_ALL, ""); ... }
環境依存文字ってなんですか?
@とか
708 :
703 :2013/06/12(水) 11:30:54.08
>>705 回答有難うございます。
すみません、手元のコードから移す際に漏れていました。
ロケールの設定を行っても、「@」などは表示できますが、
Unicode環境依存文字「?」「?」が表示されません。
因みに、MessageBox(NULL,_T("?"),NULL,MB_OK);と直接指定すると表示できます。
宜しくお願いします。
UNICODE有効にしてる? UNICODE か_UNICODE ってのをビルド時に指定してやらないと。
L"?"ってやってちゃんと出るか試さないと
Unicode環境依存文字ってなんですか?
712 :
703 :2013/06/12(水) 12:00:32.23
>>709 >>710 >>704 に書きました通り、UNICODEビルドです。
念のため、各関数をUNICODE版に置換しましたが、
>>705 の結果と変わりありませんでした。
ファイル名にはUnicode環境依存文字「↝」が含まれています。
>>712 >dir /b | fooとすると、
>環境依存文字が?として表示されてしまいます。
dirの出力の文字コードは何になるよう
設定してんのよ?
UTF-8に設定してるなら
freopenでモードを"b,ccs=UTF-8"に指定するとか
setlocale(LC_CTYPE,"Japanese_Japan.65001")
しないとダメなんじゃね?
stdinは標準ではマルチバイト文字のデータ列に結び付けられるので utf-16(コンソールのパイプ) -> shiftjis(stdin) -> utf-16(_fgetwsの結果) となって変換できない文字が化けてるようだな
715 :
703 :2013/06/12(水) 13:20:36.11
>>713 cmd /uで起動したコマンドプロンプト上で、
setlocale(...)やFILE*fp=_wfreopen(L"CON",L"b,ccs=UTF-8",stdin);を加えたコードを実行しましたが、
setlocale()の場合は?で表示され、_wfreopen()の場合は一度目のfgetws(buffer,1024,fp)でNULLを受け取ってしまうようです。
_wfreopen(...ccs=UTF-16LE...);等も試しましたが、状況は変わりませんでした。
Windowsって糞だな って結論?
テキスト処理はいつの時代になっても面倒臭いが結論だろ?
>>715 よくわかんないけど、dir コマンドはファイルにリダイレクトした時と、パイプにリダイレクトした時で挙動が違うみたい。
具体的には、標準入力を単純に 16進ダンプするプログラム作って、cmd /u から...
dir | dumphex
ってやるのと
dir > test.dat
dumphex < test.dat
で、結果が違う。
パイプの時は、sjis にしてるみたい。
と言うことで、
>>716 が正解かも。
char16_tってどんなときに使うのですか? 中途半端な気がして、使い道が思いつきませぬ
windowsとかicuの内部文字コードなのでそれなりに使う
OSは割と内部 UTF-16 or UCS-2 で動いてる
>>721 windowsで使われてるのはwchar_tだろ?
>>723 windowsでは sizeof(wchar_t) == sizeof(char16_t) だから
windowsではというよりVCではというべきか
wchar_t は環境依存だからなあ 今更変更のしようがないとは思うが
wchar_tはmbstowcsみたいな変換があるけど char16_tはそれが無いのでウンコ uint16_tの方がまだマシだ
727 :
703 :2013/06/12(水) 21:35:36.17
>>719 コード有難うございます。
MinGWでも動作確認しました。
Unicode環境依存文字をパイプで取り扱うには、コンソールの文字コード変更が必要と言うことですね。
回答して下さった皆様、有難うございました。
デスクトップのWinでC/C++は小数派だからな。そんなのしているのは学生ぐらいかな WinでC/C++だと問題がいろいろ問題が出るよな。
何言ってるかわからなすぎて吹いたw
winでC++やってるけど問題ってなんだろう
不自由ソフトなんて使わないで、自由ソフトのLinuxに来いよ
使わない自由を行使させてもらいます
小数派
>>731 江○添さんみたいに
頭が不自由になるからいやです
WinでC/C++やっているやっている奴はVSのproでMFCしているのか? 仕事ならともかく、趣味でやっている奴はProなんて高くて買えないだろ apiでゴリゴリならC#、VBだろう
>趣味でやっている奴はProなんて高くて買えないだろ そうだね。でもMFCにしがみつくのはジジイだけ >apiでゴリゴリならC# イミフ
学生ライセンスでタダ乗りやろ? 知らんけど裏技あるらしいで
>>739 学生はアカデミックなんとかあるから激安でPRO(?)使えるからな
>>738 爺以外はどんな、フレームワークを良く使っているんだ?
お前は何を使っているの
>>740 WPF。
C++でGUIとか、ゲームだけにして。
C++でWPFって良く使われているのか
だが殆どのメジャーな市販アプリはC++でGUIという現実
たぶん全てのWEBブラウザがC++で書かれてる
ちょっと待って5万そこらで高いとか言ってんの? 趣味に5万もかけられないとか貧困すぎるだろ
趣味で5万はまあいいんだが、1年で2013が出るのはちょっと心が折れそう
趣味でも毎年5万程度ならたいしたこと無いだろう
748 :
デフォルトの名無しさん :2013/06/14(金) 00:28:25.13
貧乏人に趣味を選ぶ権利などない 文句があるなら働け屑が
Winプログラミングは金がある奴がするものだからな。貧乏人はLinux/GNUで 今年、VC2013が出るのか。Win8.1を出すからなのか、C++11完全対応を餌に金儲けか
Expressではだめなんでしょうか?
Express+Qtでいいんじゃない? やったことないけど
QtCreator使えよ。
普通ATLだよ
プログラミング入門の勉強のため以外にCやC++に存在価値なんて有るんですか?
はい。
うちの会社も、案件減ったとはいえ、まだ6割くらいはC++だからなあ C++「も」書ける人なら、食いっぱぐれはないだろう
>>754 それが理解できるようになるまで頑張って勉強しましょう
VC10のC++11対応がクソすぎるんで試しにVC11入れてみたんだけど、臭い立つクソが普通に臭いクソに なっただけだった。 C++BuilderがClang採用するらしいんだけど、使ってる人いる?コード補完とかカーソル合わせた時の型 名ポップアップとかある?デバッガ含めて全体の使い勝手とかどう?32bit版もちゃんとClangでC++11対 応してる?情報激しく求む。
学生ならDreamSparkでやりたい放題じゃん
windowsを窓から投げ捨てろw C++11するならまずlinux、100歩譲ってmac、windowsは捨て捨てポイw
VC2012でのC++11の対応率は95%ぐらいはあるの? 2012だから100%とはいわなくても95%ぐらいはないとな 今年の2013は当然C++11完全対応で、C++14を色々取り入れたものになるんだろう
C++ BuilderのClang採用は64bit版だけ、格安のStarter版は32bit開発限定だから 恩恵を受けられない。 Clangが目的なら10万円くらいするPro版以上必須で恩恵を受けられるのは64bit 開発に限られる。 てか、Clang本体はフリーなんだから、IDE諦めてCUIで使えば? IDE欲しさに10万円とかありえん話だわ。
>>762 そんなものなのか,orz。MSはC++やる気無いんじゃないのか
これじゃVC2013でもC++11の完全対応は無いかも知れないな
一方俺様製作のC#・VB等に力入れているんだろうが
ということは、clang用のIDEを作れば受けるんだな?
microsoft も clang に興味を示しているとかいないとかニュースになってた気が
gccでいいじゃん
GCCはまだ準拠度低いから
ClangをWindowsで使っている奴いる?
>>769 なにその罰ゲーム?
linuxならソース引っ張ってきてmakeしてmake installするだけの作業でも
windowsだとググってコマンドラインツールかき集めてソース修正してコンパ
イルしたらなんかうまくいかなくて再びググってって、どんだけマゾなのかw
>>770 make地獄はオナニストの趣味だろ
出来の悪いReadmeを前に、
他人が出来ないmakeを通すことに
喜びを覚え自慢するという
>>769 cygwin にはすでに入ってるので時々使う
ああっ、もうダメッ! ぁあ…C++出るっ、C++14出ますうっ!! ビッ、ブリュッ、ブリュブリュブ リュゥゥゥーーーーーッッッ!!! いやああああっっっ!!見ないで、お願 いぃぃぃっっっ!!! ブジュッ!ジャアアバァーーーーーッッッ…ブシャッ! ブババババババアアアアア アッッッッ!!!! んはああーーーーっっっ!!!ウッ、ウ ンッ、クロノォォォッッ!!! ムリムリイッッ!!ブチュブチュッッ、ミ チミチミチィィッッ!!! おおっ!ODRッ!!ウッ、ウンッ、右辺値ッッ!!!右辺値見てぇっ ああっ、もう ダメッ!!はうああ あーーーーっっっ!!! ブリイッ!ブボッ!ブリブリブ リィィィィッッッッ!!!! いやぁぁっ!あたし、こんなにいっぱいラムダ出してるゥゥッ! ぶびびびびびびぃぃぃぃぃぃぃっっっっ!!!!ボトボトボトォォッッ!!! ぁあ…例外出るっ、例外出ます うっ!! ビッ、ブリュッ、ブリュブリュブ リュゥゥゥーーーーーッッッ!!! いやああああっっっ!!見ないで、お願 いぃぃぃっっっ!!! ブジュッ!ジャアアア アーーーーーーッッッ…ブJAVAAAAアアアア アッッッッ!!!! んはああーーーーっっっ!!!ウッ、ウ ンッ、constォォォッッ!!! ムリムリイッッ!! ブチュブチュッッ、ミチミチミチィィッッ!!! おおっ! アッ!!アッ、アウッ、autoッッ!!!トレイリングリターンタイプ見てぇっ ああっ、もう ダメッ!!はうああ あーーーーっっっ!!! ブリイッ!ブボッ!ブリブリブ リィィィィッッッッ!!!! いやぁぁっ!あたし、こんなにいっぱいエラー出してるゥゥッ! ぶブイビぃぃーーっっっ!!!!ボトボ トボトォォッッ!!! ぁあ…型推論出るっ、型名出ます うっ!! ビッ、ブリュッ、ブリュブリュブ リュゥゥゥーーーーーッッッ!!! いやああああっっっ!!見ないで、お願 いぃぃぃっっっ!!! ブジュッ! イテレーターーーーッッッ…ブシャッ! ブババババババアアアアア アッッッッ!!!!
> アウッ、autoッッ !
初学者用のきれいなので頼む
【IT】 「C言語やJavaを使う人は採用しない」「AGKやDarkBASICの方が生産効率が高い」就職活動
http://kohada.2ch.net/test/read.cgi/pcnews/1365242417/139-141 コンソール研究所は13日、C言語やJavaを使う学生を採用しない方針を固めた。
これは昨今のソフトウェア開発現場において社内研修期間を嫌う企業や官公庁の意向を取り入れたもので、
「 卒業=即戦力 」 が求められる新時代への突入を明確にしたものである。
たいていの面接官は ” 学生時代にどんな部活に所属していましたか? ” などと聞くが、それは時代遅れと
なったようだ。
また、C言語やJavaのスキルを問うものに対しても、「 実務経験がなければ意味がない 」 と言う現場の声も
反映した。
コンソール研究所の開発現場から一人の声を拾ってみた。
(以下ソース参照)
ググっても出てこない会社なんぞどうでもいい
アホやな javaというゴミを排除したい気持ちはわかるが Cをおろそかにするカスはいつまでたっても良いプログラマにならない
コンソール研究所はクソコテなのでNGに放り込むとよい
リンク先見たらマジ基地さんではないか マストNG
コンソール研究所なんてはじめて聞いたなあ その戦略でどんな結果が残せるのか見物だな
COBOLを駆逐する勢いのJavaが怖いんだろ まあJavaはいろいろと設計が古いんで後から後から建て増しして文法が汚くなり、 C#に見劣りするようになってしまったけど、C#も今となっては十分汚いな 特にLinqが入ってから汚くなった これとラムダ式を組み合わせるともはや暗号に近い領域
しかしLINQをパクろうとしているjavaであった
LINQができてから、C#もいいと思うようになったけれどね。 それに、まずC++には、refやoutの書式があったほうがいい。
>>784 LINQ はちょっといいなと思うが、ref と out はいらんだろ
LINQよりメソッドチェーンのが見やすい
vc++2012 で実現できる、スマートな可変長引数の処理の仕方はどんなものでしょう。 型は固定でいいです。
>>782 COBOLは(WinPCベース限定)とっくにVBAに駆逐されてるが。
WSとかLINUXだと今でもCOBOLが新規で使われることあるんだろか...
保守ならわからんでもない(30年前のソースコードを無修正でビルドして動かせるような言語を他に知らんし)。
>>787 可変長テンプレートのこと?だとしたらVisual C++ Compiler November 2012 CTP入れれば使えるけど
VS2012そのものは更新されないから、C++11絡みの機能使うとインテリセンスがスットコドッコイな赤線を
エディタ上に一杯引いてエラー報告してくるよ。一応コンパイルは通るから、そんなんでも良いなら使えば?
Microsoft倒産しろ 中身のないビジュアル系といい おっさん御用達のOfficeといい ろくなものを作らない
>>788 企業だと、オブジェクト指向COBOL使う。
>>790 本当にろくでもないものばかりなら、世界シェアぶっちぎりで1位は保てないんじゃないかとマジレス
なんでもエクセルで書いてメールに添付するバカがやっと淘汰されつつある。 クラウド化万歳w てか、そもそも、メール一斉送信して読んだら返信てシステム自体がバカすぎて笑える。 今までよく我慢してたなと関心するわw
>>792 "誰にとって"良いものなのか、だけの問題たろ。
>>792 基本的にこの世界はバカによる多数決で成り立ってる
シェアで良し悪しを語るのはバカのやることだよ
不思議なのはITの仕事してる人間がExcelとかメールの誤用をなんの疑いもなくやってる事だ
べつに「正しい使い方」とかないと思うよ、方眼紙もわるくないよ ところで「メールの誤用」って具体的にどういうものを指すの? 誤用といわれてもちょっと思いつかないんだけれど
>>795 馬鹿の独裁よりはましだし、いいんじゃない?そもそも馬鹿の定義って何?
>>790 で?Visual Studioより優れた開発環境ってどれなの?
教えてくれないか?そんなのがあるなら喜んで移行するから
gccならそもそもvs使えんし
VwwwwwwSwwwwwwwwwwww
802 :
デフォルトの名無しさん :2013/06/16(日) 15:47:36.38
バカがカキコするから糞スレになってきたな
仕方ないよ IT業界にはバカしかいない とくににちゃんを見てる層にはね
>>803 2chは馬鹿・キチの集うところだからな
おまえら、自分は馬鹿・キチって自覚しろよ
オナニーを研究しようぜ! オナニ研究所、名前が直接的すぎるな。 G研究所、セルフシコシコ、 自らを慰める研究淫の会… よしコンソール研究所でいこう! こうして生まれたのがコンソーレであった。
見ないで、お願 いぃぃぃっっっ!!! ブジュッ!ジャアバァーーーーーッッッ… ブシャッ! ブバババJAVAaaaァッッッッ!!!! んはああーーーーっっっ!!! ああっ、もう ダメッ!!はうああ あーーーーっっっ!!! ブリイッ!ブボッ!ブリブリブ ィビィィィィッッッッ!!!! いやぁぁっ!ぁあ…例外出るっ、例外出ます!! ァッッ!!!だめ戻り値見てぇぇっ ああっ、もう ダメッ!! いやぁぁっ!あたし、こんなにいっぱいエラー出してるゥゥッ! ぶブイビぃぃーーっっっ!!!!ボトボトボトォォッッ!!! ウッ、ウ 右○値見てぇぇぇっっっ!
807 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/06/17(月) 00:51:34.19
今、逆アセンブラ作ってる。最終的には逆コンパイラにしたい。そこでC/C++のパーサーが必要なんだけど、いいのありませんか?
.Net Frameworkにおける例外処理はもはや戻り値判定に成り下がってしまってるのは問題 なんじゃないかって思う。 スレチか。
ものによってはこれ何で例外なの?ってのがあるのは確か FTPでエラーが帰ってきたのとか、例外じゃなくてもいいだろ IsError プロパティでも用意すればいいだけ
>>812 FTPマニア向けFTPフル実装クラスだったら
ステータスを取れるようにすべきだけど
FTPでファイルを取ってくる通信クラス
だったら
例外でいいんじゃない?
FtpWebRequestだよ 基本何でもできる
今、sha1ハッシュ処理書いてる。最終的には暗号解読したい。そこでラインダールのアルゴリズムが必用なんだけど、いいのありませんか?
あるよ
てめー0lBZNi.Q7evd をdisってんのか アルゴリズムさえあれば 暗号解読ぐらい朝飯前なお方だぞ
>>815 >sha1ハッシュ処理書いてる。最終的には暗号解読したい
速度出したいなら、既存の高速演算できる実装を拾ってくればいいんじゃ……
>>813 例外は、回復不能で続行不能な場合に限るのが良いと思う。
「FTPのエラー」なら、回復不能でも続行不能でもないから、例外にしない方がいいと個人的には思う。
片っ端から例外吐いて落ちるアプリ作ると面白いな
>>819 最近その意見スゲー多いんだが、もしかして今やそっちのが主流派なのか?
>>821 昔と今が変わったのか、またどちらが主流派なのかは分からないけど、俺は昔から
>>819 な考え方だよ。
例えば、HTTPで401や404エラーになったとき、httpコンポーネントが例外をthrowしたらやりにくいでしょ?
FTPでも同じ。
823 :
デフォルトの名無しさん :2013/06/18(火) 15:03:05.93
【第01回】ミクと学ぶC言語【開発環境】を見て勉強してるんだけど4分27秒のとこの ビルトってやつ押してもエラー音だけで何も変わらない 書いたソース見ても動画のと同じだしどうしたらいいの?
824 :
デフォルトの名無しさん :2013/06/18(火) 15:12:54.22
#include<stdio.h> int main(void) { int a=10; int b=20; int c; c=a+b; printf("c = %d\n",c); return 0; } ↑なんだけど…どっか間違ってる?
例外はコンストラクタに投げさせるものじゃね?w
827 :
デフォルトの名無しさん :2013/06/18(火) 15:47:55.65
文法的に問題ないならなんで30ってでずに書いたソースのままでるの?
コンパイラってなんですか?
830 :
デフォルトの名無しさん :2013/06/18(火) 16:08:33.00
>>828 そういうことはいいからちゃんと教えてよー…
なんでこうなるか知りたいんだ
もしかして「コンパイル」せずに単にテキストエディタで見たというオチじゃないだろうなw
>>830 入力待ちが無いからコンソールが一瞬だけ表示されてまたエディタ画面に戻っているだけだと思う
Ctrl+F5を押せばいいと思うよ
rubyだかなんだかのスクリプトのつもりでやってるんじゃないの?
>>836 でもまあ「F5押せ」と言いたくなるのは分かる
(正確には「ビルドする」であって「実行する」ではないが)
つか今時bcc使うとかないわ、せめてVisual Studio にしろよと
あっちならブレークポイント置いとけば勝手に止まるし、コマンドラインコンパイラも使えるしな
BCCにはブレークポイントとか コマンドラインコンパイラー無いんですか?
839 :
デフォルトの名無しさん :2013/06/18(火) 21:58:52.75
初歩的な質問で申し訳無いけど ()っていちいちローマ字入力にしないと打てないんだがどうすればいいの?
>>839 必要なときだけ日本語入力にすればいいんじゃないかな。
おまいさんのレベルだとむしろ日本語を使わない方がいい
ぽっくんは仮名入力ですが 普通に()が入力できます ATOKで変換キーを押すと入力できます
>>838 ブレークポイントはあるよ
デバッガがついてこないだけで
デバッガのついてこないブレークポイントとは どのような概念なのか
>>839 全角で記号打ち込んでF8押すと半角になるよ
visualstudioにてwinsockを用いたTCPのプログラムを作成しています バッファリング処理はバッファをstrcatで連結していけばよいのでしょうか? もしもっといい方法があるなら教えて頂けないでしょうか
849 :
デフォルトの名無しさん :2013/06/19(水) 20:42:43.79
std::vector<unsigned char>
850 :
848 :2013/06/19(水) 22:21:43.35
>>849 早速のレスありがとうございます
なるほどvectorなんて便利なものを使うのですね
ありがとうございます
>vectorなんて便利なものを使う いやそれはおかしい。 固定長だろうとデリミタまでの可変長だろうと、 大きめの固定長バッファを一つ用意して 受信APIに 渡す次の書き込み位置をずらしていくことで 受信データを完成させるべき。
そんなものに「べき」なんてないよ
生winsock apiならvectorはないでしょ。 vector使うって奴、コード書いてみ?
>>853 ただ単にお前さんがvectorの使い方知らないだけだよ
>>855 こういうのいいよな
「馬鹿には無理」とか言う奴に「コード書いてみろ」と言うと大抵逃げる
単なる冷やかしと煽りなのが良く分かる
こういう発言にちゃんとIDが出れば、 同一人か同かもわかるし、いい加減な煽りはできなくなる そして、まじめなやり取りだけが書かれるようになる スレの住人にとってこんなに有意義な事はない
858 :
851 :2013/06/20(木) 00:19:37.02
めんどくさいだけじゃね?
いやそうはならない
バカの相手するだけ無駄 「コード書いてみろ」だってよw
862 :
859 :2013/06/20(木) 00:23:28.53
フォローいれた瞬間ほぼ同時にコード出してくるとは
コード書かないのは電文形式によって全然違うアプローチになるからだけど アホには分からないんだろうなあ もっとも俺はvectorをバッファとして使うのは無駄な初期化コストが入るからやらないけど
vector使うメリットないじゃん。
866 :
デフォルトの名無しさん :2013/06/20(木) 00:50:37.11
>>857 IDなんていくらでも変えられるから意味なし
特に
>>856 に言ってんなら日付またいでるから本人が意図しなくても変わってる
クズはIDが何なのかも分かってないみたいだなw
>>865 やっぱ、コードも書けなくて想像で言ってるんだと思うよ。
recv()の周辺数行書けば意図を表明できるのにやらない。できないんだと思うよ。
>>856 煽ったらコードが出てくると思った?
コード乞食もここまでくると哀れ。
そんな非生産的なことやってるとか生きてる価値ないよお前。
いくらでも変えることは出来るが、変える奴は信用されない。 だから、IDは有効なツールになる。
870 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/06/20(木) 00:53:28.70
現在のサイズを記録してresizeメソッド使った後、追記すればデータ型は関係ない。 そんなの関係ねー
858の糞コードは明らかに854を 揶揄するものだったけど 話をそらそうとしているのは まさか図星だったのか
vector脳
>>869 意図しなくても日付が変わればIDも変わるのに何言ってんのこいつ
毎日0時に議論リセットか?w
だったらトリップのほうが確実
876 :
デフォルトの名無しさん :2013/06/20(木) 01:08:25.69
馬鹿に言うだけ無駄
メモリブロック再確保。 resizeやreserve使えば回避できる
ぼよよん ぼよよん まったりいきましょ
char (unsigned char) 配列をポインタで指して書き込みさせるインターフェースに対して std::vector<char> を使うと、 resize() の際の 0 初期化が切り離せないので無駄が生じる。 初期化無しのメモリ確保は reserve() でできるけど、 size() を超えた書き込みは許されない ので結局使えない。
もちろんvectorはグローバル変数が基本です。 そうしないとreserveしても 初期コストがかかるからね。 NRVを進化させた「グローバル 共有戻り値最適化」と呼んで欲しい。
vectorを使うメリットは、free()やdelete []することなしにメソッドの何処からでもreturnできる、 位しか思い付かないけど、他に何かある?
size_t siz; //サイズ記録 vector<BYTE> buf; buf.resize(siz + 10); memcpy(&buf[siz], mem, 10); siz += 10;
>>881 ローカルなvectorの「初期コスト」って何のこと言ってるの?
>resize() の際の 0 初期化 ネットワークI/Oの話をしているときに バカですか? 0初期化のコストは測定限界以下の誤差
>>882 それだけでもあれば使わない理由は無いと思うんだが、それじゃ足りないと思うの?
他に大きいのは例外飛んでも安心ってとこかな。
0 初期化しないresize()が欲しいな。どこにおねだりすればいい?
888 :
880 :2013/06/20(木) 01:32:30.95
>>885 ああ、そういう特定の状況について使うべき・べきではないと言ったわけじゃないよ。
一般的に「無駄が生じる」と言っているだけ。
>>884 vector kuso_recv() {
vector buf; ←これだろ
buf.push_back(糞);
return buf;
}
>>887 何もしないconstructのアロケーターを
vectorの第二テンプレート引数に渡す
>>885 >0初期化のコストは測定限界以下の誤差
測定したこともないのがバレバレ
まあ、そんな高パフォーマンスを要求されるプログラム書いたこともないんだろうけど
今日は勉強になる書き込みが多い。ありがとう。 見せ金詐偽に気を付けようね。
自分が使ってるライブラリのstd::uninitialized_fillの実装を調べたこともないのが丸わかりな奴が ドヤ顔で「測定限界以下」とか言い張っても苦笑するしかない
>>893 参考までに、ゼロ初期化のコストが
問題となるケースを教えて下さい
・求められる平均スループット(MiB/s)
・1秒間に発生するresizeの回数と合計の増分サイズ
少なくともTCP通信というミリ秒レベルの処理で
これらが問題となることはあり得ないのでは
ないかと思います
あとstd::uninitialized_fillというのも
vectorの話から唐突で、何の関係があるのか
さっぱりわかりません
>>890 そのconstructはAllocator requirementsに適合しないね。
896 :
890 :2013/06/20(木) 02:11:02.86
>>894 893 じゃないけど、例えば渡したバッファに対してすでにメモリ上にキャッシュ済みの
データ列を指定サイズ書き出すようなケースを考えるとして、本来 memcpy() 相当で
済むはずのところが memset() + memcpy() 相当となり、単純にメモリアクセスの回数で
考えて「読み+書き」が「書き+読み+書き」で、だいたい 1.5 倍に増えることになる。
結局どうすれば?
900 :
895 :2013/06/20(木) 02:13:44.63
>>896 ↓このあたり。
17.6.3.5 [allocator.requirements] Table 28
> a.construct(c, args) Effect: Constructs an object of type C at c
901 :
890 :2013/06/20(木) 02:14:45.78
>>900 いやそれは読んだ。
それのどこに適合しないの?
>>899 memset()が「0初期化」に相当するってことで、あってると思うけど?
>>901 C型のオブジェクトを構築するものと要求されているところで何もしなければ適合しないに決まってるだろ。
904 :
890 :2013/06/20(木) 02:20:57.31
>>903 unsigned charのオブジェクトの構築に
ゼロ初期化の処理など要らんだろ
何を逝っているんだお前は
unsigned char c;
これだってオブジェクトは「構築」されている。
「構築」された状態にするのに処理が不要だっただけ
>Allocator requirementsに適合しないね。 >どのあたりが? >17.6.3.5 [allocator.requirements] Table 28 >いやそれは読んだ。 こいつらキチガイ
プログラマとしては正常な精神状態です。
いやいやいや、ここは初心者スレだから vector?便利なものがあるねってレベルで
908 :
895 :2013/06/20(木) 02:45:41.19
>>904 そうなのか?と思って調べてみたら "construct" の定義が見つからなかった。
1.8 [intro.object] p1 の "An object is created by a definition, by a new-expression or
by the implementation when needed." で言う "create" と同義と解釈してたんだけど、
定義が無くて曖昧ということならそういう解釈もできるね。
909 :
890 :2013/06/20(木) 02:57:22.86
>>908 constructの説明に近いのは8.5の冒頭か
何もしてないというより
default-initializeをした状態と言うべき
910 :
895 :2013/06/20(木) 02:58:33.84
>>909 もうちょっと調べたら 8.5 [dcl.init] p7 にあった。
"An object that is value-initialized is deemed to be constructed ... even if no constructor
is invoked for the object’s initialization."
ってことで "Constructs ..." には value-initialized が( unsigned char なら 0 初期化が)
必要となるので、やっぱり何もしないconstructはAllocator requirementsに適合しないね。
おねだりしましょう
912 :
890 :2013/06/20(木) 03:24:32.71
>>910 それは「value-initializeされたものはconstructされたと見なす」
であってconstructの条件じゃないんじゃないの
例えば8.5p11で初期化子が無いためにvalue-initializeでなく
default-initialize(p6)されてデフォルトコンストラクターが
呼ばれたクラスオブジェクトが
constructされていないかといったらそれは違うだろう
>>912 そのケースを「constructされていない」とすると矛盾が生じる記述があるかな?
914 :
895 :2013/06/20(木) 03:55:29.44
英語でおねだりして ねこ、まっしぐら
>クラスのコンストラクタが完了した場合は当然constructされたものとみなされる Why? constructの定義が無いんだろ?
江添さんチーッス!
918 :
895 :2013/06/20(木) 04:27:24.88
>>916 あぁ、ごめんよ。
>>908 を書いた時点ではクラスじゃないものに明らかに適用できない
「コンストラクタの完了」はconstructの定義になりえないと思ってたけど、
>>910 で見つけた記述や
>>914 で挙げたDRを読んだら、十分条件の
ひとつと数えて問題ないと考え直したんだ。
>>894 今のネットワークHW性能はミリ秒単位なんかじゃない
無駄なメモリアクセスがどれだけパフォーマンス上で問題になるかマルチコア
をフルに使ったプログラムをまじめに組めばはっきりと分かること
std::uninitialized_fillが何か分からないならvectorのコンストラクタやresizeを
デバッガでステップ実行してみれ
あとstd::vectorの初期化はカスタムアロケータじゃ回避できないよ
俺が言ってるvectorの初期化コストが問題って言うのはHW性能のギリギリレベルの パフォーマンスが要求されるような場合の話であって そうじゃない場合はvectorを汎用バッファとして使ったって勿論何の問題もない 全てはケースバイケース
いったん確保した領域を使いまわせ。 サイズ拡大する予定ならリサーブしとけ。
unsigned char buf[16384]; 大抵はこれでいける。
923 :
890 :2013/06/20(木) 07:04:06.25
>>918 何を言っているかさっぱりわからんぞ
・value-initializeでなくてもコンストラクターの完了したら
construct完了になるというのはどこから読み取った?
・constructの十分条件でなく必要条件が
value-initializedとどこから読み取った?
924 :
895 :2013/06/20(木) 11:12:15.57
>>923 > ・value-initializeでなくてもコンストラクターの完了したら
> construct完了になるというのはどこから読み取った?
「constructorが完了したらconstructedである」という、単語の関連から可能な解釈であって、
どこから読み取ったということは無い。
「initializationが完了したらinitializedである」とか「modificationの対象はmodified」とかそういうの。
> ・constructの十分条件でなく必要条件が
> value-initializedとどこから読み取った?
型を限定せずオブジェクト一般について、"constructed"となる条件は、上記の解釈と
>910で挙げた特記事項により、「コンストラクタが完了した、またはvalue-initializedされた」
と、2つの十分条件があり、他には無い(見当たっていない)。unsigned charについて言えば
前者は成立し得ないので、後者が必要(必要十分条件)になると判断した。
最近流行ってるUNKO/KUSOって 元ネタはなんなの?
foo、bar、hoge、hageの代わりじゃね? UNCHI(United China)、UNKO(United Korea)かも判らんが。
幼稚だよね
NG推奨ワード foo/bar/hoge/fuga/KUSO/UNKO
bazとpiyoを使えということか!
>>924 >後者が必要(必要十分条件)になる
亀レスだけど、
必用と十分の区別もつかないアホだな。
え?
>>930 バックエンドが互換性無いんだから
統合したところで実用にならないような…
>>930 統合ってIDEはVS、
コンパイラ、ライブラリはビルドしたClangのものをVSで使えるようにするってこと?
インテリセンスで Clangの機能を呼べるのか? 呼べないとマズイような
936 :
デフォルトの名無しさん :2013/06/27(木) 19:05:10.70
【初心者姦ゲイ】C/C++室 Ver.84【姦狂依存OK】
>>935 無理だった上にC++11の構文をみつけるとインテリセンスがエラーの赤線引くウザい
Windows Vista Home SP2 32bit VC++ 2010 Express Edition この開発環境でトリップを生成するにはどのような手順が必要ですか? #testを◆.CzKQna1OUに変換したいです unistd.hをインクルードしてcryptを使用するソースは見つかるのですが Windows上ではcryptは使用できないみたいなのです
cryptのアルゴリズム調べれば済むだろゴミ
関数のアルゴリズム調べろとかいう奴がゴミ Perl持ってくりゃいいだろ
>>938 こんな風に直してみて
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
#include <limits.h>
#ifdef HAVE_PWD_H
#include <pwd.h>
#endif
#ifndef _PASSWORD_EFMT1
#define _PASSWORD_EFMT1 '_'
#endif
limits.hにcryptは無いぞ
理由は分からないが、以前limits.hにある定義を使ってたのかも >static char sccsid[] = "@(#)crypt.c 5.11 (Berkeley) 6/25/91"; >static char sccsid[] = "@(#)crypt.c 8.1.1.1 (Berkeley) 8/18/93"; このソースには入っていた
>>938 cryptのC言語実装なんてググればすぐ出てくるだろ
コードをググル時のゴミ(hatenaとかtwitterとかstackoverflowとか諸々)避け汎用キーワードって何?
>>945 汎用キーワード? -site: じゃダメなのか?
947 :
938 :2013/06/28(金) 23:33:54.00
948 :
デフォルトの名無しさん :2013/06/29(土) 05:03:06.94
>以前limits.hにある定義を使ってたのかも >このソースには入っていた こういう馬鹿を見るとイラっとする
950 :
デフォルトの名無しさん :2013/06/30(日) 01:55:56.22 ID:hro7qS4x!
vector<int> aa; const int x = 4; const int y = 4; int tmp[x][y] = { {1, 1, 1, 0}, {0, 1, 0, 1}, {0, 1, 1, 1}, {0, 0, 0, 1}, }; for (int i = 0; i < x; ++i) { vector<int> a; for (int j = 0; j < y; ++j) { a.push_back(tmp[i][y]); } aa.push_back(a); } とやって、aa[i][j]とかでaaの要素を使おうとおもってたのですがうまくいきません。 for (int i = 0; i < (int)aa.size(); ++i) { for (int j = 0; j < (int)aa[i].size(); ++j) { cout << aa[i][j] << " "; } cout << endl; } こんな感じで表示させると、 0 0 0 0 0 0 0 0 0 0 0 0 12775664 12775664 12775664 12775664 とか表示されます。どこか間違ってるか教えて下さい。
いくら「vector」と言っても、実際のデータ構造はほぼ普通の1次元配列 ……つまり、aaとaは両方intの1次元配列と考えて差し支えない 要するに、「aa.push_back(a);」は、「aa[i] = a」と書くようなもの。そりゃ上手くいかないわけだ ちなみに、vectorを入れ子にすれば2次元以上の配列も宣言可能。詳しくはググれ
tmp[i][y]
953 :
デフォルトの名無しさん :2013/06/30(日) 02:11:31.29 ID:hro7qS4x!
ありがとうございます! すいません、 vector< vector<int> > aa; としてやったのですが、ソースをコピーするときに間違えました。
954 :
デフォルトの名無しさん :2013/06/30(日) 02:23:47.94 ID:hro7qS4x!
すいません、ミスわかりました。
>いくら「vector」と言っても、実際のデータ構造はほぼ普通の1次元配列
>>951 はvectorを何だと思ってたんだろう
vector、奴は四天王の中でも最弱…
>>955 実際ほぼ「動的にサイズ変更できる1次元配列」だろ……
まあコンテナ自体、「templateを駆使して作った便利な配列」なんだけど
「実際」とか「ほぼ」じゃなくて、1次元配列と同じ扱いが出来るのが保証されてるのがvectorの利点じゃ? あとコンテナは配列だけじゃないだろ、連結リストとか
>>957 一次元配列のデータ構造をしたコンテナーに
他ならないのだけれど、
「いくらvectorと言っても」とは?
std::listにはoperator[]がないぞ std::dequeのoperator[]は複雑な演算を必要とするのか著しく遅いし
>>960 operator[]ってコンテナの要件に含まれてたっけ?
んなわけないだろ ランダムアクセスできなければコンテナじゃない だなんて
>>962 いやいや今回のように一次元配列とか二次元配列でアクセスする場合は必要だろう、って話
別にコンテナの要件ではない
何いってんの?
質問です 仮想クラス IHoge と関数 void Piyo(IHoge* pHoge) があり、 関数 Piyo の内部では pHoge の実行時の型でコピーを作りたいと思っているのですが、 どのような実装をすればいいのでしょうか。
人にものを訪ねるときはpiyoとhogeを使うな 話はそれからだ
PiyoとHogeを使った質問しか出来ません
すみません… 書き直した方が良いですか
じゃあshine
自分のコピーを作る関数を規定する
>>975 ゴミグズはやっぱり恥ずかしくないんだな
hogeとか書いといてまたのこのこ出てくるとか頭悪すぎ
hogehoge
hoge排除厨はなぜかfoo barには文句を付けないだよね
いやfoo barも同じ
この程度でゴミクズ呼ばわりされては
>>975 もたまらないだろうけど
安易にhogeを使うと争いに巻き込まれる
という勉強にはなっただろう
hogeというクラスを作りたいのですが、どうやればいいですか><
まずロープで首を吊ります
なんでhogeって嫌われてるの? そもそも一般的に嫌われているのか、ここのスレだけなのか、一部のアンチだけなのか
このスレの一部のアンチ
下手したら一人のキチガイという可能性もあるw
嫌われているという風に見せてるネタだと思ってた
また始まったよ こんな下らないことにゴチャゴチャ言う奴って俺の想像を超えた無能なんだろうなぁ
当然だろ ム板にいてもプログラムを書けないからこそhogeに妙にこだわったり 人の事を馬鹿呼ばわりする位しか出来ない
hogeがすぐに出てくるのは普段日本語の資料しか調べてない証拠 日本語より英語の資料のほうが多いのに、わざわざ少ない日本語の資料を選ぶ →合理的な思考回路を持たない基地害 基地害はプログラミングなんかやってる場合ではない 病院行け
>>989 発狂中の病人が病院を抜け出して書いております
とっとと病院に(・∀・)カエレ!!
>>987 一般的に嫌われてるよ。
「エックス、イコール、100です」って言っても変な奴だとは思われないけど、
「ほげぇ、イコール、100です」って言ったらあいつ絶対おかしいって話になる。
試しに何人かにこれ言ってみな。
C++をディスるためにやってることだからスレが荒れればなんでもいいんだろ hoge使うなはそもそも合理的理由が無く、ゆえに論理的な反論がされないから言い放題で好きなだけ荒らせる便利な口実 ましてその辺を理解できず便乗したり信じそうになる奴がいるんだからやめられないだろうな
「問題です。えっくすイコールひゃく、わいイコールえっくす、ではわいはいくつでしょう?」 「問題です。ほげぇほげぇイコールひゃく、ふがぴよイコールほげぇほげぇ、ではふがぴよはいくつでしょう?」
994 :
デフォルトの名無しさん :2013/07/01(月) 19:50:03.58
C++をディスるためにやってることだからスレが荒れればなんでもいいんだろ そもそもhogeを使う合理的理由が無く、ゆえに論理的な反論がされないから使い放題で好きなだけ荒らせる便利な口実 ましてその辺を理解できず便乗したり信じそうになる奴がいるんだからやめられないだろうな
要するに、C++について行けない無能な上に人格障害患っているゴミが粘着して暴れてるってだけ
hogeとコードに実際に書いたところで品質に左右されるわけじゃねーんだから気にすんなよ
です
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。