2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

スレを勃てるまでもない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 ★