C++相談室 part87
■ このスレッドは過去ログ倉庫に格納されています
0001ゆとり
2010/12/09(木) 19:31:20このスレはゆとりのためのC++相談室 part87です。
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。
前スレ
C++相談室 part86
http://hibari.2ch.net/test/read.cgi/tech/1288976595/
http://hibari.2ch.net/test/read.cgi/tech/1289292155/l50
このスレもよろしくね。
ついでに壁紙にしてね。
http://www.research.att.com/~bs/Bjarne.jpg
0159デフォルトの名無しさん
2010/12/14(火) 23:43:40良かったなあC++脳じゃなくて
せいぜい単価の安いJava土方でもやっててね
0160デフォルトの名無しさん
2010/12/14(火) 23:44:17職を失うのは単に本人の責任だろ^^
知識ポートフォリオは技術者なら当然なわけで。
0161デフォルトの名無しさん
2010/12/14(火) 23:52:16処理系ってVCとかのことを言うんじゃないの?
それともWindowsって答えればいいの?
0162デフォルトの名無しさん
2010/12/14(火) 23:55:33windowsプログラムで範囲チェックしたら重くなるようなプログラム書いてるってこと?
0163デフォルトの名無しさん
2010/12/14(火) 23:56:05当たり前じゃね?
配列インデックスがポインタ演算に置き換わる最適化なんて限度があるんだし、
かけ算と足し算を毎回実行してたらまずいだろ。
0164デフォルトの名無しさん
2010/12/15(水) 00:00:27それは配列をなめる時にだよね。
0165デフォルトの名無しさん
2010/12/15(水) 00:01:07そうだよ。つかVCのvectorをWindows以外で使う人はほとんどいないと思うんだが…
0166デフォルトの名無しさん
2010/12/15(水) 00:39:47語るに落ちてるぜ
おまえ自身が何ナノ秒かわからなくて言ってるんだろ?
0167デフォルトの名無しさん
2010/12/15(水) 00:43:18{
if(v.size()<=i) return FAILED;
・・・
}
範囲チェック派ってこれに違和感感じない人ってことだよね?ちょっと頭やばくない?
0168デフォルトの名無しさん
2010/12/15(水) 00:46:290169デフォルトの名無しさん
2010/12/15(水) 00:48:30まわりのコードやループ回数にもよるだろうし定量的には言いにくいね。
分岐予測して仮実行してたのが当たった時の遅れだからたいしたことはないだろうけど、
5ナノ秒はかからんだろたぶん。まあ実測あるのみだね。
0170デフォルトの名無しさん
2010/12/15(水) 00:56:55ループの中でi以外のインデックスを使わないんだったらイテレータで
安全に書けるでしょ。i+4とかi-1とかの要素にアクセスするんなら
チェックがあってもおかしくないんじゃない?
0171デフォルトの名無しさん
2010/12/15(水) 00:57:525ナノ秒を「保証」できるか?
さもなくば、おまえの論も「危険」なのか?
0172デフォルトの名無しさん
2010/12/15(水) 00:59:26おかしい
それは開発段階で排除できるミスだからリリースまでチェックを残す必要性が無い
0173デフォルトの名無しさん
2010/12/15(水) 01:00:18よくわかってるじゃないか。operator[]が範囲チェックするのは無意味なんだよ。
>>167はoperator[]が範囲チェックするってのはこれと同じことですよといっている
0174デフォルトの名無しさん
2010/12/15(水) 01:01:41vectorはランダムアクセスイテレータだからoperator[]に範囲チェックが欲しい人は
イテレータにも範囲チェック欲しいだろ
0175デフォルトの名無しさん
2010/12/15(水) 01:02:33その例じゃ無意味さを表現出来てないから頭やばいと言ってるんだけど
0176デフォルトの名無しさん
2010/12/15(水) 01:03:280177デフォルトの名無しさん
2010/12/15(水) 01:03:51やっぱり、日本は低脳が超増えているから、ゆとり言語じゃなければ駄目な国に
になってきてるんだよな
0178デフォルトの名無しさん
2010/12/15(水) 01:05:54非常に残念だが明日早いから寝るわ。
0179デフォルトの名無しさん
2010/12/15(水) 01:10:18ライブラリに範囲チェック組み込まれたら範囲チェックしたくないときは使えないという選択しかできない
0180130
2010/12/15(水) 01:13:10>天ぷら引数で範囲チェックありなしのポリシーを指定するとか考えなかったのか。
にしとけばどっち派でも好きな方選べて文句無いんじゃねーの?
範囲チェック有り無しのif文なんて最適化で消えてオーバーヘッド無いだろ。
>>179
いやだからテンプレ引数で選択できるようにしたらと最初から言ってるのだが。
0181デフォルトの名無しさん
2010/12/15(水) 01:14:360182デフォルトの名無しさん
2010/12/15(水) 01:17:16[]とatできりかえれるんだから
0183130
2010/12/15(水) 01:22:39まあいいや。もう寝る。
0184デフォルトの名無しさん
2010/12/15(水) 01:24:19テンプレ引数で選択できるようにしたら範囲チェックするvectorと範囲チェックしないvectorは別の型になるが大丈夫か?
0185デフォルトの名無しさん
2010/12/15(水) 01:25:290186デフォルトの名無しさん
2010/12/15(水) 01:29:41未定義の動作の一部として処理系が独自の条件で throw out_of_range をあてがえばいいだけのこと。
0187デフォルトの名無しさん
2010/12/15(水) 01:51:56簡単に切り替えたいのかイマイチ主張がわからんな
既存のソースを修正せずに範囲チェックを追加したいってことか?
0188デフォルトの名無しさん
2010/12/15(水) 19:43:01チェックしてくれるのはありがたいけど、その通知方法はabort()にして欲しいな。
リリース版であっても、いやリリース版だからこそ、
バグを検知したら即座に異常終了してデバッグ情報を残すのが誠実なプログラムだと思う。
0189デフォルトの名無しさん
2010/12/15(水) 20:36:300190デフォルトの名無しさん
2010/12/15(水) 22:49:36客先にJITデバッガでも入れてるのか?いきなりabortされたらデバッグ情報も残せないだろ。
サーバアプリならcatchハンドラで各変数の状況をログに残して
プロセス終了した方がいいと思うし、
GUIアプリならプログラムがabortするより丁寧なお詫び文を表示して
プログラム終了した方がユーザーの怒りが少ないだろう。
0191デフォルトの名無しさん
2010/12/16(木) 20:02:19無ければ自分でなんとかしないとならないけど、いずれにせよ例外でロールバックされちゃかなわん。
0192デフォルトの名無しさん
2010/12/16(木) 20:28:510193デフォルトの名無しさん
2010/12/16(木) 20:39:510194デフォルトの名無しさん
2010/12/16(木) 20:59:01アセンブラに自信があったのに甘さを思い知らされた
0195デフォルトの名無しさん
2010/12/16(木) 21:00:50本当にC++屋はくだらないことに努力して仕事を失っていくのが好きだな
0196デフォルトの名無しさん
2010/12/16(木) 21:03:33よっぽど効率悪い開発してるな、又は組込か?
0197デフォルトの名無しさん
2010/12/16(木) 21:06:320198デフォルトの名無しさん
2010/12/16(木) 21:12:430199デフォルトの名無しさん
2010/12/16(木) 21:17:22あとはプログラムの再起動を仕込んでおけばOK
0200デフォルトの名無しさん
2010/12/16(木) 21:19:370201デフォルトの名無しさん
2010/12/16(木) 22:21:47> Javaにした方がいいぞ。
> した方がいいぞ。
「した方がいいぞ」
お前働いてないことがよく分かる一言だな。
0202デフォルトの名無しさん
2010/12/16(木) 22:41:080203デフォルトの名無しさん
2010/12/16(木) 22:44:390204デフォルトの名無しさん
2010/12/16(木) 22:45:40#define DEBUGWRAP_DEBUG
//Debug.hpp
namespace DebugWrap
{
void OutputDebugStrA(const char* pString);
void OutputDebugStrW(const wchar_t* pString);
}
#endif
//Debug.cpp
#include "DebugWrap/Debug.hpp"
#include <windows.h>
namespace DebugWrap
{
void OutputDebugStrA(const char* pString)
{
OutputDebugStringA(pString);
}
void OutputDebugStrW(const wchar_t* pString)
{
OutputDebugStringW(pString);
}
}
というのをVCで /Za(言語拡張を無効にする)オプションで
コンパイルしたところ、予期せぬ EOF が検出されました。エラーが出ます
どこがおかしいですか?この有効状態ではコンパイルが通ります
0205デフォルトの名無しさん
2010/12/16(木) 22:46:43>>8
0206デフォルトの名無しさん
2010/12/16(木) 22:47:59C++ --> C# と進む人は少ないんじゃないだろうか。
C#使うならVBでいいや。
0207デフォルトの名無しさん
2010/12/16(木) 22:49:000208デフォルトの名無しさん
2010/12/16(木) 22:49:10プリコンパイル済みヘッダは無効になっています
0209デフォルトの名無しさん
2010/12/16(木) 22:57:11低脳用言語C#、VB使いなさいよ
0210デフォルトの名無しさん
2010/12/16(木) 23:01:27プロジェクトがC++使うことに決まってたらどうしようもないだろ^^
0211デフォルトの名無しさん
2010/12/16(木) 23:04:460212デフォルトの名無しさん
2010/12/16(木) 23:04:570213デフォルトの名無しさん
2010/12/16(木) 23:14:50机の上に積み上げてたら、.netの部署が忙しいらしくてそっちに
まわされることになった。
助かったよ。
0214デフォルトの名無しさん
2010/12/16(木) 23:15:430215デフォルトの名無しさん
2010/12/16(木) 23:39:50奴らはまともなオブジェクト指向言語に触れたほうがいい。
どんどん新しい人に追い抜かれていってるぞ。
0216デフォルトの名無しさん
2010/12/16(木) 23:50:230217デフォルトの名無しさん
2010/12/16(木) 23:51:48C++は俺俺指向(自分で志向をあみ出す高脳用言語)なのに
自分で道(志向)を切り開けない低脳は使っちゃ駄目よ
0218デフォルトの名無しさん
2010/12/16(木) 23:55:210219デフォルトの名無しさん
2010/12/16(木) 23:59:260220デフォルトの名無しさん
2010/12/17(金) 00:01:360221デフォルトの名無しさん
2010/12/17(金) 03:52:40俺俺指向なのはまあいいけれど、たまにベターCとかいってる人がいるのはちょっとだめだと思う。
0222デフォルトの名無しさん
2010/12/17(金) 16:23:01パラダイムをねちねち語る奴は仕事の出来ない奴
これ常識な
0223デフォルトの名無しさん
2010/12/17(金) 16:29:030224デフォルトの名無しさん
2010/12/17(金) 16:50:340225デフォルトの名無しさん
2010/12/17(金) 18:17:21使われててもcout関係だけ
0226デフォルトの名無しさん
2010/12/17(金) 18:30:43それが利点でなくてなんなんだ
0227デフォルトの名無しさん
2010/12/17(金) 18:40:450228デフォルトの名無しさん
2010/12/17(金) 18:44:19なんとなくC/C++屋ってハードに近いのをあつかっているってイメージで、
ドライバなんかをがりがり作ってそうな感じですが
0229デフォルトの名無しさん
2010/12/17(金) 18:55:370230デフォルトの名無しさん
2010/12/17(金) 19:16:200231デフォルトの名無しさん
2010/12/17(金) 19:23:08シリアル通信だったら許す
0232デフォルトの名無しさん
2010/12/17(金) 19:25:02君の無能さを顕著に示しているよいレスだ
0233デフォルトの名無しさん
2010/12/17(金) 19:38:240234デフォルトの名無しさん
2010/12/17(金) 20:11:57あとコンテナだけ使ってるとかだろ
0235デフォルトの名無しさん
2010/12/17(金) 20:19:270236デフォルトの名無しさん
2010/12/17(金) 21:07:040237デフォルトの名無しさん
2010/12/18(土) 03:53:440238デフォルトの名無しさん
2010/12/18(土) 05:29:150239デフォルトの名無しさん
2010/12/18(土) 11:04:17「ロベールの入門講座」を読みながら学んでいるのですが、
p144のオーバーロードの項で詰まりました。
本の内容を見比べ、ソースを打ち込んで試しているのですが、
「関数 'double abs(double)' は既に本体を持っています。」とエラーが出ます。
(関数名を変えれば動きます)
http://codepad.org/0i4ByGfl
が自分の書いたソースです。
私はVC++2010を使用しているのですが、
「ロベールの入門書」は2008を前提として書いているようで、
そこら辺の違いもあるのでしょうか?
0240デフォルトの名無しさん
2010/12/18(土) 11:06:58死ねカス
0241デフォルトの名無しさん
2010/12/18(土) 11:41:45abs()は標準ライブラリ関数だぞ
マクロとして定義されている事もある
0242デフォルトの名無しさん
2010/12/18(土) 12:24:35標準の<cmath>にstd::absが定義されているので、それと被っている。
多分コンパイラのバージョン違いで<iostream>が<cmath>をインクルードするようになったんだろう。
対処は自分のabsを名前空間に入れる。
namespace nantoka {
int abs(int a) { if(a < 0) { return -a; } else { return a; } }
double abs(double a) { if(a < 0) { return -a; } else { return a; } }
}
勿論呼び出すときはnantoka::abs(i)とする。
まあ根本的にはそもそもusing namespaceを使わずに常に名前空間を指定して呼び出すのが常道。
0243デフォルトの名無しさん
2010/12/18(土) 13:45:260244デフォルトの名無しさん
2010/12/18(土) 13:51:33なんでプログラム書くの?
0245デフォルトの名無しさん
2010/12/18(土) 13:53:280246デフォルトの名無しさん
2010/12/18(土) 13:54:490247デフォルトの名無しさん
2010/12/18(土) 13:56:37位ならいいんだけどね
orelib::utility::gui::win32::window
とか面倒じゃね
0248デフォルトの名無しさん
2010/12/18(土) 13:59:060249デフォルトの名無しさん
2010/12/18(土) 14:27:450250デフォルトの名無しさん
2010/12/18(土) 14:56:25using namespace はやめれ
typedef か inline でしのげ
0251デフォルトの名無しさん
2010/12/18(土) 15:04:270252デフォルトの名無しさん
2010/12/18(土) 15:09:340253デフォルトの名無しさん
2010/12/18(土) 15:17:440254デフォルトの名無しさん
2010/12/18(土) 16:46:46Cライブラリをstd名前空間にラップしてくれないのがおかしいんだよ^^
0255デフォルトの名無しさん
2010/12/18(土) 16:55:440256デフォルトの名無しさん
2010/12/18(土) 19:36:37本ではAbsと大文字になってるでしょ
0257デフォルトの名無しさん
2010/12/18(土) 20:55:34優秀なドカタと劣悪なドカタが居るのかも知れないが、
俺からみればお前ら全員所詮ドカタであって
それ以上では決して無かろう。
0258デフォルトの名無しさん
2010/12/18(土) 21:13:19■ このスレッドは過去ログ倉庫に格納されています