■ このスレッドは過去ログ倉庫に格納されています
スレを勃てるまでもないC/C++の質問はここで 24
- 1 :デフォルトの名無しさん:2015/11/28(土) 13:30:34.09 ID:S1e+2GUN.net
- スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。
過去ログ
01 http://pc11.2ch.net/test/read.cgi/tech/1167476845/
02 http://pc11.2ch.net/test/read.cgi/tech/1178503366/
03 http://pc11.2ch.net/test/read.cgi/tech/1187521676/
04 http://pc11.2ch.net/test/read.cgi/tech/1221633708/
05 http://pc11.2ch.net/test/read.cgi/tech/1230516307/
06 http://pc11.2ch.net/test/read.cgi/tech/1231564903/
07 http://pc11.2ch.net/test/read.cgi/tech/1232983248/
08 http://pc12.2ch.net/test/read.cgi/tech/1235921779/
09 http://pc12.2ch.net/test/read.cgi/tech/1240022781/
10 http://pc12.2ch.net/test/read.cgi/tech/1242300936/
11 http://pc12.2ch.net/test/read.cgi/tech/1245059383/
12 http://pc12.2ch.net/test/read.cgi/tech/1248010352/
13 http://pc12.2ch.net/test/read.cgi/tech/1260842197/
14 http://pc12.2ch.net/test/read.cgi/tech/1269273471/
15 http://pc12.2ch.net/test/read.cgi/tech/1273368706/
16 http://hibari.2ch.net/test/read.cgi/tech/1279285647/
17 http://hibari.2ch.net/test/read.cgi/tech/1285115590/
18 http://hibari.2ch.net/test/read.cgi/tech/1291571263/
19 http://hibari.2ch.net/test/read.cgi/tech/1308106024/
20 http://toro.2ch.net/test/read.cgi/tech/1316013463/
21 http://toro.2ch.net/test/read.cgi/tech/1342285511/
22 http://peace.2ch.net/test/read.cgi/tech/1399911167/
23 http://peace.2ch.net/test/read.cgi/tech/1420379468/
- 964 :デフォルトの名無しさん:2016/08/10(水) 19:58:07.55 ID:oJSizC1Q.net
- func()の中でswitch()で分岐してる状態で
case 1: 何かやる break;
case 2: 何かやる break;
func()を書き換えずに何かやる部分をプロジェクトによって変えるような事はできる?
- 965 :デフォルトの名無しさん:2016/08/10(水) 20:29:50.53 ID:FPLZcb1n.net
- 関数ポインタ仮想関数ラムダ
- 966 :デフォルトの名無しさん:2016/08/10(水) 20:31:27.03 ID:DNEsHj4R.net
- プロジェクトごとに条件を定義して #define, #ifdef, #ifndef, #else, #endif などで切り替える
- 967 :デフォルトの名無しさん:2016/08/10(水) 21:24:43.34 ID:oJSizC1Q.net
- >>965
色々あるんだね
>>966
プロジェクトが増えるとfuncも書き換えないといけない
- 968 :デフォルトの名無しさん:2016/08/11(木) 00:06:31.55 ID:FqLT9pgZ.net
- case 1: func_case1(); break;
case 2: func_case2(); break;
...
とやってプロジェクトごとに異なるfunc_caseXの定義を書けばいいんでは
- 969 :デフォルトの名無しさん:2016/08/11(木) 05:28:06.54 ID:Zd798CT0.net
- >>968
> func()を書き換えずに
- 970 :デフォルトの名無しさん:2016/08/11(木) 05:29:47.92 ID:Zd798CT0.net
- >>969
って事だから競合起こさないようにした方がよくね?
- 971 :デフォルトの名無しさん:2016/08/11(木) 10:07:08.96 ID:fF/OSXWkL
- たぶんマクロしか無いよ。
#ifdef PROJECT_A
void func() { a... }
#else
void func() { b... }
#endif
好きな方使えばいい
#ifdef PROJECT_A
#define func func_project_a;
#else
#define func func_project_b;
#endif
- 972 :デフォルトの名無しさん:2016/08/11(木) 10:12:33.21 ID:xfJcHpdP.net
- funcを書き換えずにってのは一度書いたfunc自体のソースだけはどのプロジェクトでも書き換えずに使うって意味じゃないのか
- 973 :デフォルトの名無しさん:2016/08/11(木) 11:20:31.32 ID:Zd798CT0.net
- プロジェクト1
func()
プロジェクト2
func()
ここまでok
プロジェクト3
プロジェクト1
func()->func_case1()
プロジェクト2
func()->func_case1()
どっち呼ぶんや?
- 974 :デフォルトの名無しさん:2016/08/11(木) 11:22:12.26 ID:ZnWKVyt1.net
- そういう意味だともうよ
だから、関数ポインタ仮想関数ラムダ関数オブジェクト
まぁこれはC++での呼び名だが
何らかの方法でコードブロックをコールバックしてもらうしかないと思うよ
一般的によく行われることだし問題ないっしょ
- 975 :デフォルトの名無しさん:2016/08/11(木) 13:19:34.88 ID:xfJcHpdP.net
- >>973
そのプロジェクト3でfunc()を呼んだらプロジェクト1と2のどっちのfunc()を呼ぶんだ?
- 976 :デフォルトの名無しさん:2016/08/11(木) 14:27:00.61 ID:Zd798CT0.net
- >>975
func自体は変更無しなんだから問題じゃなくね?
- 977 :デフォルトの名無しさん:2016/08/11(木) 21:21:58.58 ID:TQheNK/m.net
- >>973
そのプロジェクトってなんだ?
- 978 :デフォルトの名無しさん:2016/08/11(木) 21:39:36.85 ID:GJmRLzEl.net
- >>976
プロジェクト1とプロジェクト2でfuncの(最終的な)動作は変わるんだろ
その両方の動作を使いたいからプロジェクト3ではプロジェクト1,2両方を取り込んでいるんであって
そうしたからには使いたい動作にあわせて意図的に呼び分けができないとだめだろ
- 979 :デフォルトの名無しさん:2016/08/12(金) 01:02:36.03 ID:tIcwp4Gc.net
- なんで両方の動作を使いたいって話になってるんだ?
プロジェクト1でfunc()を呼び出したらプロジェクト1のfunc_caseXXX()が呼ばれる
プロジェクト2でfunc()を呼び出したらプロジェクト2のfunc_caseXXX()が呼ばれる
プロジェクト3でfunc()を呼び出したらプロジェクト3のfunc_caseXXX()が呼ばれる
プロジェクトがいくら増えてもfunc()の中身自体は修正を必要としない
ということがやりたいんだろ?>>964は
- 980 :デフォルトの名無しさん:2016/08/12(金) 08:55:39.80 ID:V4dr4yFb.net
- >>978
プロジェクト3ではプロジェクト1と2の両方のfunc_case呼ぶってなんで?
プロジェクト3専用のfunc_caseだろw
- 981 :デフォルトの名無しさん:2016/08/12(金) 10:09:26.57 ID:A6nfo0WT.net
- >>968,966,967のやり方じゃだめだって>>969=958=960=963が>>973で例を出して言ってるんだろ
で>>973の例にはfuncの中身以前に問題があるんじゃないのという疑問だろ
- 982 :デフォルトの名無しさん:2016/08/12(金) 12:00:33.75 ID:tIcwp4Gc.net
- >>981
つまりどういうこと?
- 983 :デフォルトの名無しさん:2016/08/12(金) 12:28:25.41 ID:V4dr4yFb.net
- >>981
>>980ではむしろ>>978を否定したつもりなんだが
- 984 :デフォルトの名無しさん:2016/08/13(土) 09:29:25.77 ID:ShTSXbfa.net
- pを使った処理はAとBどっちに書くのがセオリ?
try {
p = new int;
// A
}
catch() {
// 失敗時の処理
return;
}
// B
- 985 :デフォルトの名無しさん:2016/08/13(土) 11:58:33.65 ID:xf3MhneS.net
- 書き手がなにを重視しているかの視点・哲学の話だからどっちでもいい
- 986 :デフォルトの名無しさん:2016/08/13(土) 12:22:48.55 ID:zvhXM4IK.net
- その「pを使った処理」で発生した例外をそのcatchで捕まえたいかどうか次第じゃないかと。
- 987 :デフォルトの名無しさん:2016/08/13(土) 12:37:38.79 ID:ShTSXbfa.net
- つまり
例外が発生する処理を1つのtryブロックでまとめるか
処理毎にtryブロックを用意するかの違いって事かな
try { p = new int; /* pを使った処理 */ q = new int; } catch() { return; }
try { p = new int; } catch() { return; }
// pを使った処理
try { q = new int; } catch() { return; }
こんな感じ?
- 988 :デフォルトの名無しさん:2016/08/13(土) 12:49:18.79 ID:sDKArTxu.net
- 全部間違いcatch()なんてコンパイル通らないし
そもそもそんなところでnewなんて使うな
- 989 :デフォルトの名無しさん:2016/08/13(土) 13:11:33.14 ID:woc51egB.net
- try-catchもなんだかんだで行数食うし、
どうしても分離できないところ以外は、なるべくまとめた方が良さげ
- 990 :デフォルトの名無しさん:2016/08/13(土) 13:27:50.95 ID:ShTSXbfa.net
- >>988
突っ込むなら本題でつっこんでくれ
例に対して的外れな突っ込みになってるぞ
>>989
そういうもんなんだな
- 991 :デフォルトの名無しさん:2016/08/13(土) 13:35:00.47 ID:sDKArTxu.net
- >>990
本題?そんなものにセオリなんてないというのが答え
そもそも「pを使った処理」の内容が分からないのに
- 992 :976:2016/08/13(土) 13:41:10.91 ID:woc51egB.net
- ごめん>989の日本語おかしかった
誤:
どうしても分離できないところ以外は
正:
本当は分けてcatchしたいのに、まとめてtryブロックに突っ込むと
そのままでは例外クラスの関係でまとまってしまう(分離に一手間かかる)ところ以外は
どうやら脳内補完してくれたみたいで、感謝
>>990
あくまで個人的な見解なので、メリット・デメリットはあると思う
tryブロックが長すぎても大変だろうしね
- 993 :デフォルトの名無しさん:2016/08/13(土) 13:56:22.46 ID:sDKArTxu.net
- 何を大変がってるのか理解不能
最初からnew intなんて馬鹿なことしなけりゃいいのに
- 994 :デフォルトの名無しさん:2016/08/13(土) 14:04:27.20 ID:woc51egB.net
- >>993
例文としてnew intを使ったのは質問者で(さらにその例文には特に意味もない)
「大変」という言葉を使ったのは質問者じゃなく俺(>992)なわけだが
一体誰に何をレスしてるんだ?
- 995 :デフォルトの名無しさん:2016/08/13(土) 14:07:57.10 ID:ShTSXbfa.net
- >>992,981
そうだなありがとう
煽りたがりなんだよたぶん
>>993
最初から的外れな指摘しなけりゃいいのに
- 996 :デフォルトの名無しさん:2016/08/13(土) 14:08:54.05 ID:ShTSXbfa.net
- >>985-986もアンカ付けてなかったけどありがとね
- 997 :デフォルトの名無しさん:2016/08/13(土) 14:09:23.19 ID:jehnS6hp.net
- まあ、あれだ。
いつもの「空気の読めない君」が登場しただけだから気にするな。
質問者の意図が理解できずに、会話にならないアの字の人が一人か二人いる。
- 998 :デフォルトの名無しさん:2016/08/13(土) 14:19:57.80 ID:sDKArTxu.net
- >>994
両方にレスしてる
>>984の「pを使った処理」をBに書いてもいいなら、「pを使った処理」では例外が発生しないものとしていいんだよな?
だったらどっちでもいいし
newでbad_alloc発生するかもしれないし「pを使った処理」で別の例外が発生するかもしれないよ。どうしたらいいの(泣)
ってことなら
まとめたとしても
catch(bad_alloc e) {
return;
}
catch(...) {
delete p;
return;
}
とでもすればいいだけだし議論するようなことじゃない
catch()とか書いてる時点でC++の例外処理について何もわかっていないんじゃないかと
そもそもnew失敗時にreturnって何をしたいのか意味不明なんですけどね(笑)
- 999 :デフォルトの名無しさん:2016/08/13(土) 14:29:14.04 ID:sDKArTxu.net
- >>997
出た「空気読め」
無能はいつだってこうだね
しまいには「ア」呼ばわりして勝利宣言w
- 1000 :デフォルトの名無しさん:2016/08/13(土) 14:39:41.75 ID:ShTSXbfa.net
- >>998
catchした場合はBの処理はされないという意味のreturnなんだが読み取れなかったか?
それともわざわざ「catchブロックはこの際重要ではない」と書けばよかったか?
引っ込みがつかなくなって狂っただけか?
- 1001 :デフォルトの名無しさん:2016/08/13(土) 14:46:10.18 ID:ShTSXbfa.net
- >>998
途中送信失礼
お前がやってる的外れな指摘はこういう事なんだがわかるかな?
catch(const bad_alloc &e)だろ
そこは今重要じゃないだろ?
- 1002 :デフォルトの名無しさん:2016/08/13(土) 15:49:08.98 ID:SZzp1Vb3.net
- はぁ、、、勝利とか何の話なのかな?
議論に勝ち負けがあると思ってる時点でちょっと斜め上。
- 1003 :デフォルトの名無しさん:2016/08/13(土) 18:35:59.65 ID:OPjVywq7.net
- 回答者同士で煽りあってるのかと思えば質問者と回答者だったのか
どっちがセオリーというかpを使った処理次第だし失敗時の処理次第ってところでどっちもあり
>そもそもnew失敗時にreturnって何をしたいのか意味不明なんですけどね(笑)
Bの場合に例外を飛ばさずに処理を終了させたい(Bを実行しない)ってことだろ
- 1004 :デフォルトの名無しさん:2016/08/13(土) 23:39:33.39 ID:CLd1bccm.net
- ループ展開やブロッキングのような最適化手法って他にありますか?
あと並列化特有の最適化の方法とかがあるなら教えて下さい
- 1005 :デフォルトの名無しさん:2016/08/14(日) 00:04:41.36 ID:z6U1tRVC.net
- 次スレ
http://echo.2ch.net/test/read.cgi/tech/1471100645/
- 1006 :デフォルトの名無しさん:2016/08/14(日) 18:24:32.93 ID:DuaY2f9q.net
- >>1004
OpenMPの話?
- 1007 :デフォルトの名無しさん:2016/08/15(月) 10:29:06.41 ID:SYEcbM5V.net
- コンパイラがC/C++ならOpenMPの話しはここでもいいんじゃないかな
レスが付くかどうかはわからんが
>>1004
wikipediaで"コンパイラ最適化"で項目があるから、ざっくりとわかるとおもう
- 1008 :デフォルトの名無しさん:2016/08/15(月) 10:39:36.48 ID:4wJ3nkHn.net
- >>1006
>>1007
openMPに限らず他に最適化手法が無いかなと思って聞きました
見たところwikiにもいろいろ載ってました
ありがとうございます
- 1009 :デフォルトの名無しさん:2016/08/15(月) 15:16:30.69 ID:ZZZ997rF.net
- 隔離病棟って何だよ
- 1010 :デフォルトの名無しさん:2016/08/15(月) 15:32:27.02 ID:ywF/52Nh.net
- 俺の家だよ
- 1011 :デフォルトの名無しさん:2016/08/15(月) 19:11:52.07 ID:bftlQCDN.net
- 独り占めすんなよ。
「俺たちの家」と言うべきだろ。
- 1012 :デフォルトの名無しさん:2016/08/15(月) 19:14:58.12 ID:E6/w/wVK.net
- ナース服来たメイドさんうらやま
- 1013 :デフォルトの名無しさん:2016/08/15(月) 19:20:16.07 ID:ZZZ997rF.net
- 梅酒
総レス数 1013
307 KB
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★