板検索:
C++相談室 part129 (467)
まとめビュー
このスレはC++相談室 スレの最新スレです。
表示中 C++相談室 part129 (381)
過去ログ C++相談室 part128 (1000) 2016/11/27 00:03〜
過去ログ C++相談室 part127 (500) 2016/09/23 22:11〜
1
デフォルトの名無しさん(ワッチョイ dfcf-HvS5)[sage]   投稿日:2017/01/09 14:49:27  ID:p96WJVyd0.n
次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512

C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

前スレ
C++相談室 part128

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.100【環境依存OK】

■長いソースを貼るときはここへ。■
 http://codepad.org/
 https://ideone.com/

[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
コメント3件


2
片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK3f-6Slv)[sage]   投稿日:2017/01/09 16:53:24  ID:FJMj93WYK.n(2)
STLつかうと一気に実行ファイルサイズが10倍に?!

環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない

すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。

C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?

#include <stdafx.h>
後死ね。

言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。

---- テンプレ ここまで ----
コメント1件

3
デフォルトの名無しさん (ワッチョイ 0f42-twlg)[sage]   投稿日:2017/01/09 16:56:41  ID:jVBRIf3C0.n
これは>1乙じゃなくてシフト演算子なんだからね

4
デフォルトの名無しさん (ワッチョイ dfc1-f52P)[sage]   投稿日:2017/01/09 17:39:43  ID:MgtRKFl00.n
ご苦労!

5
デフォルトの名無しさん (ワッチョイ 6f13-HvS5)[sage]   投稿日:2017/01/09 17:40:19  ID:s0WlKSpH0.n
これは>1じゃなくてストリームへの入力なんだからね

6
デフォルトの名無しさん (ワッチョイ df98-S/j3)[]   投稿日:2017/01/09 20:32:19  ID:IZbe/h670.n
catch(>1& err)
{
err << "うむ、ご苦労";
}

7
デフォルトの名無しさん (オッペケ Sr3f-KLRm)[sage]   投稿日:2017/01/09 20:48:55  ID:NzCLpVsYr.n
>2
ゴミを貼るなボケ

8
片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK3f-6Slv)[sage]   投稿日:2017/01/09 20:57:29  ID:FJMj93WYK.n(2)
へへへっ

9
デフォルトの名無しさん (ワッチョイ fb04-nASw)[]   投稿日:2017/01/09 22:45:37  ID:cNtoCjW40.n
グローバルなstatic変数は(コンパイル単位が違うと)初期化タイミングが不定だから使うな
みたいな話がありますが、これはクラスメンバのstatic変数でも同じでしょうか。

やはり定番のローカルなstatic変数の参照を返すのがベストでしょうか?
コメント1件

10
デフォルトの名無しさん (ワッチョイ df8e-KLRm)[sage]   投稿日:2017/01/09 23:42:53  ID:YmMsaSRh0.n
static int a = f();
 ↓
static int &get_unko() {
 static int a = f();
 return a;
}

問題解決になるとは到底思えない
ちなみにクラスの静的メンバーでも同じ


11
デフォルトの名無しさん (ワッチョイ 1b7b-p/5D)[]   投稿日:2017/01/10 00:09:01  ID:qNfJPVUt0.n(2)
>9
ベストは静的な寿命をもつ変数が別の静的な寿命を持つ変数を参照するような設計にしないこと
やむを得ずそうなる場合はローカルなstatic変数の参照を返す方法がベター
しかしそれも構築は初めて呼ばれた時になるが、破棄の順が不定なのは変わらずだから注意
コメント1件

12
デフォルトの名無しさん (ワッチョイ dfcf-IbiL)[sage]   投稿日:2017/01/10 00:34:11  ID:kCG+Vhkl0.n(2)
>11
破棄準は構築と逆順になるよ。 [basic.start.term]
コメント1件

13
デフォルトの名無しさん (ワッチョイ 1b7b-p/5D)[]   投稿日:2017/01/10 01:22:55  ID:qNfJPVUt0.n(2)
>12
ホンマやね
メモリ上の配置と関係なしに構築した順番覚えてるのな。

14
デフォルトの名無しさん (ワッチョイ 0f33-Flmg)[]   投稿日:2017/01/10 02:41:10  ID:YALu2HFR0.n(3)
しかし、関数内で定義したstatic変数ってどうやって「一度のみ初期化」を実現してるんだろう?
規格上の明記は無いよね?

もし、コード上に初期化フラグ的なものを保持して毎回判定してるのだとしたら、単純なグローバル変数よりアクセス遅くなるのかな?
コメント4件

15
デフォルトの名無しさん (ワッチョイ dfcf-IbiL)[sage]   投稿日:2017/01/10 03:28:04  ID:kCG+Vhkl0.n(2)
>14
気になるならアセンブリ出力を見ればいい。 https://godbolt.org/g/Rp3mVk
効率は実測でどうぞ。

16
デフォルトの名無しさん[sage]   投稿日:2017/01/10 03:42:52  ID:N3Ngq+Oq0.n
江添は何て言ってる?
コメント1件

17
デフォルトの名無しさん (ワッチョイ 0f7b-/uDL)[sage]   投稿日:2017/01/10 04:16:44  ID:UGgokZQL0.n
規格オタクの江添に実装のことを聞いてどうするのか
コメント1件

18
デフォルトの名無しさん (ワッチョイ 5f36-GcKO)[sage]   投稿日:2017/01/10 07:19:19  ID:xRFVWFBm0.n
>17
規格上明記は無いのではという>14の疑問に対して>16のレスだろうから、実装は関係ないでしょ。
コメント1件

19
デフォルトの名無しさん (ドコグロ MMff-JQu6)[sage]   投稿日:2017/01/10 08:35:32  ID:WWXPDPHuM.n
>14
スコープが違うだけだろ
フラグとか意味わからん
コメント1件

20
デフォルトの名無しさん (ワッチョイ 0f33-Flmg)[]   投稿日:2017/01/10 09:01:12  ID:YALu2HFR0.n(3)
>18
主要な実装がどうなっているのか気になりますねー。

21
デフォルトの名無しさん (ワッチョイ 0f33-Flmg)[]   投稿日:2017/01/10 09:03:05  ID:YALu2HFR0.n(3)
>19
関数内の場合は初期化タイミングが明確にされている部分が違うよね?

22
デフォルトの名無しさん (スプッッ Sdff-5duh)[]   投稿日:2017/01/10 09:17:26  ID:Kh8Jpf0Qd.n
静的ローカル変数のデストラクタはどうやって呼び出してるんですか
コンパイル時には順番決まらないですよね
コメント1件

23
デフォルトの名無しさん (ワンミングク MMff-kB5U)[sage]   投稿日:2017/01/10 10:17:49  ID:KPiaZgHCM.n
>22
生成された順にデストラクタスタックに積んどきゃええだけやろ

24
デフォルトの名無しさん (ワッチョイ bb7b-XpjH)[sage]   投稿日:2017/01/10 21:06:37  ID:aZrJHKL80.n
>14
マルチスレッド下でも1度だけ初期化しなけりゃならないのでややこしいことをやってる
コメント1件

25
デフォルトの名無しさん (ワッチョイ 6fa6-HvS5)[sage]   投稿日:2017/01/10 21:27:26  ID:A8TeocJX0.n
スレッドセーフな点がありがたいと思っているんだが

26
デフォルトの名無しさん (ワッチョイ ab26-S/j3)[sage]   投稿日:2017/01/11 09:57:17  ID:kJf5mE6d0.n(5)
その意味で、どのスレッドが最初に呼び出して初期化するか
分からないっていう怖さは有るがな
スレッドに紐づくようなものを初期化するのはNGだ
(COMであるとかウィンドウであるとか)
もしくはプログラムの最初で明示的にメインスレッドから呼び出して初期化しておくか
スレッド間でシェアする必要がなければTLSにしておくか
コメント3件

27
デフォルトの名無しさん (ワッチョイ df98-S/j3)[]   投稿日:2017/01/11 11:52:08  ID:z2RHK6s+0.n(4)
最初からいきなりマルチスレッドなわけじゃなし
mutexやatomicでどうにでもできるでしょ
コメント1件

28
デフォルトの名無しさん (ワッチョイ ab26-S/j3)[sage]   投稿日:2017/01/11 12:30:02  ID:kJf5mE6d0.n(5)
関数内で定義したstatic変数を初期化するスレッドをメインスレッドなどに制限するのを
>mutexやatomic
でどうやって解決するのか熱く語ってもらおうか
コメント1件

29
デフォルトの名無しさん (ワッチョイ df98-S/j3)[]   投稿日:2017/01/11 12:37:09  ID:z2RHK6s+0.n(4)
質問の意味がわからんぞ
コメント1件

30
デフォルトの名無しさん (オッペケ Sr3f-KLRm)[sage]   投稿日:2017/01/11 12:37:52  ID:ZhOyh3uTr.n(3)
>26
>スレッドに紐づくようなものを初期化するのはNGだ

いきなりお題改変乙
グローバルに置くんだからスレッド間で共有したい場合の話に決まってるのに
コメント1件

31
デフォルトの名無しさん (ワッチョイ ab26-S/j3)[sage]   投稿日:2017/01/11 12:53:45  ID:kJf5mE6d0.n(5)
>29
お前が
>mutexやatomic
って言ったんだろ
いっとくが排他制御の話など誰もしてないぞ
世の中には生成されたスレッドに紐づいてしまうオブジェクトというものがあって
Windowsのウィンドウであれば、生成されたスレッドのメッセージキューで
メッセージポンプを回すことになるし
COMは生成されたスレッドのアパートメントで一生を過ごす
どのスレッドで初期化されたかが重要になるオブジェクトもあるってこった
そして関数内static変数は最初に呼び出したスレッドで初期化処理が走る
この問題をお前は >mutexやatomic で解決するんだろ?
さあ、熱く語れ

>30
スレッドに紐づくようなもの(WindowsのCOMやウィンドウ)を
関数内で定義したstatic変数で初期化するのはNG
→スレッドに紐づかないものであればOK、スレッド間で共有もできる

何がお題変更なの?
グローバル変数やシングルトンに関数内static変数は便利だけど
相性が悪いものもあるって話なのに
コメント1件

32
デフォルトの名無しさん (ワッチョイ df17-pn3f)[]   投稿日:2017/01/11 14:03:34  ID:9AYGk8zp0.n(2)
static変数を考える場合、このスレ的にはC++11から導入された thread_local を無視できないでしょ。

スレッド局所記憶(英: Thread local storage, TLS)
https://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89%E5%...

33
デフォルトの名無しさん (オッペケ Sr3f-KLRm)[sage]   投稿日:2017/01/11 15:00:37  ID:ZhOyh3uTr.n(3)
>31
>何がお題変更なの?
相性が悪いものの話なんかしてねーし
スレッド間で共有したい変数の話の最中に
「スレッド間でシェアする必要がなければTLS」とか力説し始めて
アホなの?

34
デフォルトの名無しさん (ワッチョイ df98-S/j3)[]   投稿日:2017/01/11 15:51:10  ID:z2RHK6s+0.n(4)
同感

35
デフォルトの名無しさん (ワッチョイ ab26-S/j3)[sage]   投稿日:2017/01/11 15:53:31  ID:kJf5mE6d0.n(5)
相性が悪いものがあるっていう書き込みをして何が悪いんだ?

>スレッド間で共有したい変数の話の最中に

それはお前が勝手に決めたことだろ
元々あくまで関数内static変数の初期化がスレッドセーフになっているというだけの話であり
本質的にロジックとして変数をスレッド間で共有する必要が有るのか無いのかまでは関係ないだろ
本質的にスレッド間で共有する必要がない場合はTLSに変更することもできる
ってだけの話で
そのほうがパフォーマンスが出る場合もある

36
デフォルトの名無しさん (オッペケ Sr3f-KLRm)[sage]   投稿日:2017/01/11 16:34:37  ID:ZhOyh3uTr.n(3)
static変数ってどうやって〜を実現してるんだろう?
 ↓
MT保証で複雑なことしてる
 ↓
そのstatic、ホントに必要ですか?
 ↓
いきなり何を言いだすの
 ↓
本質的にロジックとして変数をスレッド間で共有する必要が有るのか無いのかまでは話してないからな←今ここ

37
デフォルトの名無しさん (ワッチョイ ab26-S/j3)[sage]   投稿日:2017/01/11 16:47:40  ID:kJf5mE6d0.n(5)
>そのstatic、ホントに必要ですか?

スレッドローカル関数内static変数の事すら理解していないのがよく分かった

38
デフォルトの名無しさん (ワッチョイ bb7b-XpjH)[sage]   投稿日:2017/01/11 17:27:25  ID:7JGhXUMg0.n(3)
>27
どのような状況で呼び出されても確実に一回だけ初期化する事が要求されている
mutexは初期化する必要があるから役に立たん
コメント1件

39
デフォルトの名無しさん (ワッチョイ df17-pn3f)[sage]   投稿日:2017/01/11 17:41:25  ID:9AYGk8zp0.n(2)
IDが見えるスレッドなのに、ひとりの相手とやりとりしている錯覚に陥った ID:ZhOyh3uTr 氏は失礼ながら、精神疾患の兆候があるかも。

40
デフォルトの名無しさん (ワッチョイ df98-S/j3)[]   投稿日:2017/01/11 18:35:56  ID:z2RHK6s+0.n(4)
俺は一言もstaticとは言ってないし
mutexとatomic「だけで」とも言ってないのに
人の話の前提条件を勝手にでっち上げて叩く
ストローマンに辟易としちまった

41
デフォルトの名無しさん (ワッチョイ bb7b-XpjH)[sage]   投稿日:2017/01/11 18:45:08  ID:7JGhXUMg0.n(3)
>26まではstatic変数(特に関数内)の初期化の話をしてたのに、知ったかぶって参加しようとしたID:z2RHK6s+0がグチャグチャにしたって事か

42
デフォルトの名無しさん (ワッチョイ df8e-KLRm)[sage]   投稿日:2017/01/11 18:48:17  ID:wUdtm8ww0.n(2)
いつもながらのぐちゃぐちゃ展開
それがこのスレの醍醐味

43
デフォルトの名無しさん (ワッチョイ df8e-KLRm)[sage]   投稿日:2017/01/11 20:16:24  ID:wUdtm8ww0.n(2)
>さあ、熱く語れ
>どうやって解決するのか熱く語ってもらおうか

どちらかというと>26あたりからおかしくなったようだ
クスリでもやっているのか、>28あたりは何か幻覚を見たのではないかと

44
デフォルトの名無しさん (ワッチョイ bb7b-XpjH)[sage]   投稿日:2017/01/11 21:00:46  ID:7JGhXUMg0.n(3)
具体的な例はないけど、作成したスレッドはRW、それ以外はROなんてのもありうるわけで
「スレッドに紐付付いてるのは共有するな」は受け入れ難い
と考えると、これをstatic変数の初期化に使うのは要注意と言う指摘は一理はあるかと

45
デフォルトの名無しさん (ワッチョイ 677b-dqLr)[]   投稿日:2017/01/12 15:07:52  ID:8CizHZGj0.n
>38
ひんとstd::mutexのコンストラクタはconstexpr修飾されてる
コメント4件

46
デフォルトの名無しさん (ワッチョイ 1f7b-cG99)[sage]   投稿日:2017/01/12 15:28:40  ID:sAPGeyQI0.n
>45
std::mutexってランタイムライブラリじゃ無いだろ
コメント1件

47
デフォルトの名無しさん (ワッチョイ 677b-dqLr)[]   投稿日:2017/01/13 00:15:44  ID:nVxQCvXm0.n
>46
ちょっと何言ってるのかわからないから誰か解説者よろ
コメント1件

48
デフォルトの名無しさん (ワッチョイ 1f36-cG99)[sage]   投稿日:2017/01/13 10:28:33  ID:VKtyxMUH0.n
>47
なんだ、そこからかよ
static変数の初期化の話題だってわかってる?
コメント2件

49
デフォルトの名無しさん (ワッチョイ b2cf-YL17)[sage]   投稿日:2017/01/13 10:37:18  ID:7CvKX7vR0.n
ぜんぜん話が見えてこない

50
デフォルトの名無しさん (ドコグロ MM0a-Hii4)[sage]   投稿日:2017/01/13 12:28:56  ID:LkImdLNRM.n
>48
関数内のstatic変数だろ。

51
デフォルトの名無しさん (ワンミングク MMe2-dqLr)[]   投稿日:2017/01/13 12:56:57  ID:kKg87s4oM.n(6)
>48
それとランタイムライブラリが何って?

52
デフォルトの名無しさん (ワッチョイ 3217-q48i)[sage]   投稿日:2017/01/13 13:13:35  ID:y8BGYaW90.n
ランタイムライブラリじゃない = ヘッダーファイルのみでOk
という意味に、私は解釈したんだがほかの人は道南?
コメント1件

53
デフォルトの名無しさん (ワンミングク MMe2-dqLr)[]   投稿日:2017/01/13 13:16:53  ID:kKg87s4oM.n(6)
>52
それが>45へのレスとしてつながる?
コメント1件

54
デフォルトの名無しさん (ワッチョイ 1f7b-cG99)[sage]   投稿日:2017/01/13 17:12:37  ID:76Aeg2JY0.n(9)
ランタイムライブラリが通じなかった?
llvmで言うところのcompiler-rtだよ
コメント1件

55
デフォルトの名無しさん (ワンミングク MMe2-dqLr)[]   投稿日:2017/01/13 18:02:07  ID:kKg87s4oM.n(6)
>54
それが?
コメント1件

56
デフォルトの名無しさん (ワッチョイ 1f7b-cG99)[sage]   投稿日:2017/01/13 18:31:46  ID:76Aeg2JY0.n(9)
>55
これで何がわからない?
コメント1件

57
デフォルトの名無しさん (ワンミングク MMe2-dqLr)[]   投稿日:2017/01/13 18:45:44  ID:kKg87s4oM.n(6)

58
デフォルトの名無しさん (ワッチョイ 1f7b-cG99)[sage]   投稿日:2017/01/13 18:49:34  ID:76Aeg2JY0.n(9)
>57
llvmで言うところのcompiler-rtって理解してる?
コメント1件

59
デフォルトの名無しさん (ワンミングク MMe2-dqLr)[]   投稿日:2017/01/13 18:55:22  ID:kKg87s4oM.n(6)
>58
うん。
それとstd::mutexのコンストラクタがconstexprだということの関連性がわからん
コメント1件

60
デフォルトの名無しさん (ワッチョイ 1f7b-cG99)[sage]   投稿日:2017/01/13 19:03:56  ID:76Aeg2JY0.n(9)
>59
じゃ、static変数の初期化の排他制御にstd::mutexを使うと言うお笑い提案に付いては?
コメント3件

61
デフォルトの名無しさん (ワンミングク MMe2-dqLr)[]   投稿日:2017/01/13 19:08:40  ID:kKg87s4oM.n(6)
>60
規格上は別に問題ないんじゃない?
コメント1件

62
デフォルトの名無しさん (ワッチョイ 3298-los8)[]   投稿日:2017/01/13 19:14:15  ID:LnYnqLIL0.n
>60=28
ストローマンまだ粘着してたのか
コメント1件

63
デフォルトの名無しさん (オッペケ Sr37-U8Ig)[sage]   投稿日:2017/01/13 19:24:27  ID:weu0eN0Dr.n
>60
まだやってんのかよ
バカに構うと時間を損するだけだぞ

64
デフォルトの名無しさん (ワッチョイ 1f7b-cG99)[sage]   投稿日:2017/01/13 19:57:05  ID:76Aeg2JY0.n(9)
>61
constexprを理解してないのか
もう一回規格読んでから出直しなよ
重要なところは3.6.2だぞ

>62
理解できないからって、おかしな捏造してごまかすのはやめたまえ
コメント1件

65
デフォルトの名無しさん (ワントンキン MMe2-dqLr)[]   投稿日:2017/01/13 20:13:13  ID:8qb1acaCM.n(5)

66
デフォルトの名無しさん (ワッチョイ 1f7b-cG99)[sage]   投稿日:2017/01/13 20:15:51  ID:76Aeg2JY0.n(9)
>65
だから、何?

67
デフォルトの名無しさん (ワッチョイ 1f7b-cG99)[sage]   投稿日:2017/01/13 20:19:22  ID:76Aeg2JY0.n(9)
>65
それのどこをどうよ読むと
static変数の初期化の排他制御にstd::mutexを使えると言うお笑い提案が出てくるんだ?
コメント1件

68
デフォルトの名無しさん (ワントンキン MMe2-dqLr)[]   投稿日:2017/01/13 20:22:34  ID:8qb1acaCM.n(5)
>67
他のスレッドより先に初期化されることが保証されているんだから排他に使えるでしょ。
まさに例で書かれてるんだけどコード読めないの?

69
デフォルトの名無しさん (ワントンキン MMe2-dqLr)[]   投稿日:2017/01/13 20:38:51  ID:8qb1acaCM.n(5)
ランタイムライブラリがどう関係してくるのか一つも説明ないんだけど、どういう事なの?

70
デフォルトの名無しさん (ワッチョイ 7e13-dHfL)[sage]   投稿日:2017/01/13 20:46:26  ID:nYJUER3p0.n(4)
お願いします.

C::a, C::b を protected のままにしたいのですが,どうしても public を要求されます.
なぜなのでしょうか
http://ideone.com/x3ymxM
コメント2件

71
デフォルトの名無しさん (ワッチョイ 7e6c-6SG4)[sage]   投稿日:2017/01/13 20:51:50  ID:daPh3nWD0.n(2)
>70
なんか色々言いたくなるけど
とりあえずmyabsがfriendじゃないから要求されてるんじゃ?

72
デフォルトの名無しさん (ワッチョイ 7e6c-6SG4)[sage]   投稿日:2017/01/13 20:53:38  ID:daPh3nWD0.n(2)
>70
ってエラーにそう書いてあるやん

73
デフォルトの名無しさん (ワッチョイ 7e13-dHfL)[sage]   投稿日:2017/01/13 21:06:18  ID:nYJUER3p0.n(4)
すみません.ありがとうございます.
http://ideone.com/BhdBHO

他になにかいろいろまずいところがあるんですね.
お手を煩わすようで恐縮ですがコメントいただけないでしょうか.
よろしくお願いいたします.
コメント1件

74
デフォルトの名無しさん (ワッチョイ 326c-6SG4)[sage]   投稿日:2017/01/13 21:12:36  ID:eTv8M5MG0.n
>73
明らかにfriend不要になったでしょ
比較クラスが比較対象を継承してるのも意味不明
意味わからずコード書いてる感じがするから勉強し直したほうが良い気がする
コメント1件

75
デフォルトの名無しさん (ワッチョイ c621-q48i)[]   投稿日:2017/01/13 21:30:49  ID:AzvsCcDE0.n
すごいコードだ

76
デフォルトの名無しさん (ワッチョイ 7e13-dHfL)[sage]   投稿日:2017/01/13 22:09:13  ID:nYJUER3p0.n(4)
>74
ありがとうございます.
確かに例示としては
http://ideone.com/Hi50Xi
で十分でした.

しかし次の場合はどうでしょうか?
不適当とは思いながら CCompare を C の継承としましたが,それでも protected がききません.
http://ideone.com/XJbnUo

プログラミングのお題スレ Part9
を書いている際にぶつかった問題です.
よろしくお願いいたします.
コメント3件

77
デフォルトの名無しさん (ワッチョイ 1f7b-cG99)[sage]   投稿日:2017/01/13 22:20:31  ID:76Aeg2JY0.n(9)
ああ、わかって来たぞ
void func()
{
static std::mutex mtx; // ←これ
...
}
このmtxの初期化を排他制御するために、非ローカルなstd::mutex生成して使うと言うお笑い提案か
目の付けどころが鴻海過ぎる
コメント1件

78
デフォルトの名無しさん (ワントンキン MMe2-dqLr)[]   投稿日:2017/01/13 22:34:28  ID:8qb1acaCM.n(5)
>77
何言ってるのかわかんねえわ。
コメント1件

79
デフォルトの名無しさん (ワッチョイ 1f7b-cG99)[sage]   投稿日:2017/01/13 22:51:30  ID:76Aeg2JY0.n(9)
>78
自分で言い出したんだろ
>65
コメント1件

80
デフォルトの名無しさん (ワッチョイ f330-emOI)[sage]   投稿日:2017/01/13 22:59:08  ID:ByW8JYfQ0.n(2)
>76
CCompareがアクセスできるのは自身のメンバとしてのa,bだから

概念的にいうならCCompareが持っているのはCから継承した自身のメンバ
CCompare::a,CCompare::bへのアクセス権であって
C::a,C::bへの直接のアクセス権を持っているわけではないから
コメント1件

81
デフォルトの名無しさん (ワントンキン MMe2-dqLr)[]   投稿日:2017/01/13 23:18:01  ID:8qb1acaCM.n(5)
>79
関数ローカルのstaticなstd::mutexをなぜmutexで保護しようとしたのかサッパリとわかんねえって言ってんの。
ランタイムライブラリとstd::mutexのデフォルトコンストラクタがconstexprである関係性の説明一つもないし相手しても出てこないって解ったから相手するのやめるよ。
最初から最後まで何が言いたいのか一ミリもわかんなかったわ。
コメント1件

82
デフォルトの名無しさん (ワッチョイ 7e13-dHfL)[sage]   投稿日:2017/01/13 23:21:37  ID:nYJUER3p0.n(4)
>80
map や priority_queue にあたえる比較関数オブジェクト(CCompare) の中に,
別のクラス(例では C) の private/protected をアクセスすることはできないのでしょうか
なんとかならないでしょうか
コメント2件

83
デフォルトの名無しさん (ワッチョイ f330-emOI)[sage]   投稿日:2017/01/13 23:59:19  ID:ByW8JYfQ0.n(2)
>82
一般的には真っ当やり方ではどうにもならない
>76のケースならCとCCompareのunionを使って真っ当にどうにかなるのかもしれない

84
デフォルトの名無しさん (ワッチョイ 1f7b-cG99)[sage]   投稿日:2017/01/14 00:05:54  ID:8QfSwFFH0.n(2)
>81
関数ローカルなstatic変数の初期化は排他制御しなけりゃならない
これはOKかな?
その排他制御にstd::mutexを使えというお笑い提案が>45
コメント2件

85
デフォルトの名無しさん (スプッッ Sdf2-gTkB)[sage]   投稿日:2017/01/14 00:37:53  ID:rG4STkB+d.n
>84
ランタイムライブラリじゃなければならない理由を説明するつもりならコード書いて例示すればいいんじゃないの?
断片的なコメント書くよりわかりやすいと思うぞ
コメント1件

86
デフォルトの名無しさん (ワッチョイ 677b-dqLr)[]   投稿日:2017/01/14 00:42:02  ID:Q3G32+hm0.n(2)
>85
関数ローカルのstatic変数の初期化を排他しなきゃいけないなんて言ってるバカを相手にしちゃいけないよ
コメント2件

87
デフォルトの名無しさん (ワッチョイ b633-zxSj)[]   投稿日:2017/01/14 00:47:15  ID:/xjCjFtE0.n(3)
>82
#define private public
#define protected public

異論反論は勿論認める。

88
デフォルトの名無しさん (ワッチョイ b633-zxSj)[]   投稿日:2017/01/14 00:51:08  ID:/xjCjFtE0.n(3)
あ、コード見てなかった。
ネタにもなって無かったわ…ごめん。

89
デフォルトの名無しさん (ワッチョイ 3290-V/2k)[sage]   投稿日:2017/01/14 01:17:03  ID:RBO90iTA0.n(2)
質問ですが、mapやunordered_mapの[]演算子が非constしか用意されていないのは
何か理由があるんですか?
コメント2件

90
デフォルトの名無しさん (ワッチョイ f330-emOI)[sage]   投稿日:2017/01/14 01:39:44  ID:mg/r9n9z0.n
>89
指定したキーに対応する要素が存在しないときは新たに要素を作成するから

91
デフォルトの名無しさん (ワッチョイ b633-zxSj)[]   投稿日:2017/01/14 01:40:54  ID:/xjCjFtE0.n(3)
>89
そのキーが存在しなくても、自動的に追加する仕様だから、const にはできない。
コメント1件

92
デフォルトの名無しさん (ワッチョイ 4f04-lw3D)[]   投稿日:2017/01/14 02:18:12  ID:kOBEZk8k0.n
static変数の話の戻るんですけど、非ローカルstatic変数は生成/開放順序が不定
だから、使うな(googleスタイルガイド)やstaticローカルの参照にしろ(effective c++)
は言っているわけですけが、非ローカルstatic constexpr変数なら問題ないですよね?
コメント3件

93
デフォルトの名無しさん (ワッチョイ 3290-V/2k)[sage]   投稿日:2017/01/14 02:22:43  ID:RBO90iTA0.n(2)
ありがとうです
仕様がそうなっているからですか
わざわざatが用意されているのもそれが理由なんですね

94
デフォルトの名無しさん (ワッチョイ 677b-dqLr)[]   投稿日:2017/01/14 02:59:59  ID:Q3G32+hm0.n(2)
>92
変数にconstexpr付けたらコンパイル時定数になるから実行時の初期化とは無縁
コメント6件

95
デフォルトの名無しさん (ワッチョイ 1f7b-cG99)[sage]   投稿日:2017/01/14 08:04:44  ID:8QfSwFFH0.n(2)
>94
あーあ、はいはい

3.7
The zero-initialization (8.5) of all block-scope variables with static storage duration (3.7.1) or thread storage
duration (3.7.2) is performed before any other initialization takes place.
Constant initialization (3.6.2) of a block-scope entity with static storage duration, if applicable, is performed before its block is first entered.
コメント2件

96
デフォルトの名無しさん (ワッチョイ 328e-U8Ig)[sage]   投稿日:2017/01/14 08:14:50  ID:4HVF8lbq0.n
話の前提(規格と実装)がずれてるような気がしなくもない

97
デフォルトの名無しさん (ワッチョイ 3298-los8)[]   投稿日:2017/01/14 08:16:06  ID:BjO/qPFR0.n
>91
正確にはconstにできないのではなく、
constにするのは良心が咎める、だろ
データの実体はthisに指されていないわけで

98
デフォルトの名無しさん (ワッチョイ f642-SV1A)[sage]   投稿日:2017/01/14 11:01:30  ID:f29MAUgw0.n
>76
protectedなんて使うな、あんなもんpublicと一緒だ

いくつかそれっぽいの書いてみたから好きなの使え
http://ideone.com/GkUTFI
http://ideone.com/IvYKWe
http://ideone.com/ZrgkZM
コメント1件

99
デフォルトの名無しさん (ワンミングク MMe2-SV1A)[sage]   投稿日:2017/01/14 13:46:51  ID:TZ84v9ShM.n
心が洗われるようなコード

100
デフォルトの名無しさん (ワッチョイ b2ac-vSov)[sage]   投稿日:2017/01/14 15:44:02  ID:SDa1ObQ20.n
struct A {
int value;
};

auto p1 = new A;
auto p2 = new A();

cout << p1->value << endl; // <- 不定
cout << p2->value << endl; // <- ゼロ

この挙動の違いは規格のどの部分で定義されてるんじゃろ?

101
デフォルトの名無しさん (ワッチョイ d3c9-U8Ig)[sage]   投稿日:2017/01/14 15:59:48  ID:kCGGguyq0.n(2)
規格を読まずに言うと8.5p11

102
デフォルトの名無しさん (ワッチョイ d3c9-U8Ig)[sage]   投稿日:2017/01/14 16:00:41  ID:kCGGguyq0.n(2)
嘘を言った
8.5までわかっていて、規格を見たら段落11だった

103
デフォルトの名無しさん (ワッチョイ 7e13-dHfL)[sage]   投稿日:2017/01/14 17:01:56  ID:pjYHXW8Q0.n
>98
ありがとうございます.C++11以降の新鮮な書き方ですね
個人的には3番目のラムダ式のものが分かりやすくていいと思いました
using 文を名前スペース以外に使う方法って,なんていうのですか?詳しく調べたいと思います.

104
デフォルトの名無しさん (ワッチョイ 677b-dqLr)[]   投稿日:2017/01/15 12:13:55  ID:OwCHVx6x0.n(7)
>92 がバカに騙されてないか少しだけ心配
コメント1件

105
デフォルトの名無しさん (オイコラミネオ MMce-mZvv)[]   投稿日:2017/01/15 12:52:42  ID:oZyLvSNYM.n(2)
>104
何も考えんとアホみたいにstatic使ってるやつよりマシやろ

106
デフォルトの名無しさん (ワッチョイ d3c9-U8Ig)[sage]   投稿日:2017/01/15 13:12:23  ID:n2HQszSv0.n
マシかどうかではなく問題の有無で語るべきではないか

107
デフォルトの名無しさん (オイコラミネオ MMce-mZvv)[sage]   投稿日:2017/01/15 13:19:44  ID:oZyLvSNYM.n(2)
>94
みたいな回答がついてそれに
>95
とツッコまれるくらいの問題はあるやろ

108
デフォルトの名無しさん (ブーイモ MM8b-STcG)[sage]   投稿日:2017/01/15 13:41:07  ID:gYQA4gmtM.n
「コンパイル時に定数として評価される」ことと「コンパイル時に解決される」ことを混同している人は結構いると思う。
コメント2件

109
デフォルトの名無しさん (ワンミングク MMe2-SV1A)[sage]   投稿日:2017/01/15 13:50:38  ID:dIwTpKXnM.n
>108
どうちがうの?

110
デフォルトの名無しさん (アウアウカー Sa5f-YGRn)[sage]   投稿日:2017/01/15 14:48:53  ID:Vh4eztBka.n

111
デフォルトの名無しさん (ワッチョイ b2cf-YL17)[sage]   投稿日:2017/01/15 16:26:13  ID:6tnmROhD0.n(4)
>95
それ C++14 の 6.7p4 ね。で、 3.6.2 p2 にこんな規定もある。
> Together, zero-initialization and constant initialization are called
> static initialization; all other initialization is dynamic initialization.
> Static initialization shall be performed before any dynamic initialization
> takes place.
だから>94の言う「実行時の初期化とは無縁」というのは間違ってないと思う。

あと、ここらへんの文面が C++14 の後に変わってて、>95の引用した文面は消えてる。
http://wg21.cmeerw.net/cwg/issue2026
コメント3件

112
デフォルトの名無しさん (ワッチョイ 1f7b-cG99)[sage]   投稿日:2017/01/15 20:39:17  ID:T6BZe6fz0.n(6)
>111
3.6.2のタイトルを1000回音読してから出直してくれたまえ
コメント1件

113
デフォルトの名無しさん (ワッチョイ b2cf-YL17)[sage]   投稿日:2017/01/15 20:51:15  ID:6tnmROhD0.n(4)
>112
3.6.2 Static initialization [basic.start.static]
で、これ読んだら話がどう変わると思ってるの?
コメント1件

114
デフォルトの名無しさん (ワッチョイ 1f7b-cG99)[sage]   投稿日:2017/01/15 21:57:06  ID:T6BZe6fz0.n(6)
>113
なるほど、名前も変えるの見落としてた
なんか支離滅裂な提案してるなと、読み込みを本能的に拒絶してた

>94が正しくなるということだね
>86みたいな電波とばしてるからマグレ当たりだろうけど
コメント2件

115
デフォルトの名無しさん (ワッチョイ b2cf-YL17)[sage]   投稿日:2017/01/15 22:22:21  ID:6tnmROhD0.n(4)
>114
名前?提案?いったい何の話?

>46 からずっと、ほとんど何言ってるのかわかんなくてこわい。
もうちょっと伝わる文面にしてもらえないものか。


あと、「>94が正しくなる」じゃなくて現行の C++14 でも正しいよ。
コメント2件

116
デフォルトの名無しさん (ワッチョイ 3298-los8)[]   投稿日:2017/01/15 22:24:11  ID:RPIsJnBb0.n(2)
>108
今現在の流れにどんな関係があるんだ?
constexprの効力は最適化と関係ないぞ

117
デフォルトの名無しさん (ワッチョイ 677b-dqLr)[]   投稿日:2017/01/15 22:39:13  ID:OwCHVx6x0.n(7)
>115
少しでも解るなら凄いよ…
俺全く理解出来ないからスルーすると決めたもの。

118
デフォルトの名無しさん (ワッチョイ 677b-dqLr)[]   投稿日:2017/01/15 22:49:15  ID:OwCHVx6x0.n(7)
デタラメばかり言ってるから流石にもう騙される人は居ないと思うけど、一応関数ローカルなstatic変数の初期化タイミングに排他必要ないという記事張っとくよ
ググって日本語で一番上にでた記事だよ

http://d.hatena.ne.jp/yohhoy/touch/20120309/p1
コメント1件

119
デフォルトの名無しさん (ワッチョイ 3298-los8)[]   投稿日:2017/01/15 22:54:49  ID:RPIsJnBb0.n(2)
ggrを最高神とあがめる信者か
採用1年目からアレをやらされるとそうなるかねえ
コメント1件

120
デフォルトの名無しさん (ワッチョイ 0fc9-U8Ig)[sage]   投稿日:2017/01/15 23:01:04  ID:Ah8VE8+/0.n
読点の前に書かれているように
読点の後を鵜呑みにするか試しているのではないか

121
デフォルトの名無しさん (ワッチョイ 677b-dqLr)[]   投稿日:2017/01/15 23:02:17  ID:OwCHVx6x0.n(7)
>119
検索したらすぐ解ることを読めもしない規格だけ読んで間違って解釈するやつの前でそんな事言えんの?
残酷な奴だな
コメント1件

122
デフォルトの名無しさん (ワッチョイ 1f7b-cG99)[sage]   投稿日:2017/01/15 23:02:52  ID:T6BZe6fz0.n(6)
>118
そこにも日本語で解説してあるだろ

> gcc 4.0.0から既定動作でスレッドセーフなコードが出力される。(自動的に排他制御コードが埋め込まれる。)

これは最初から言っている(>24)
コメント1件

123
デフォルトの名無しさん (ワッチョイ 677b-dqLr)[]   投稿日:2017/01/15 23:08:33  ID:OwCHVx6x0.n(7)
>122
いや、そんな事十分に理解しておりますよ。
自分で排他制御を書く必要ないって書くべきだったか?

どこぞのレスで
> >86みたいな電波とばしてるからマグレ当たりだろうけど

って書いてるからそれに騙されてる人が居ないか心配で書いただけだよ
コメント1件

124
デフォルトの名無しさん (ワッチョイ 1f7b-cG99)[sage]   投稿日:2017/01/15 23:14:37  ID:T6BZe6fz0.n(6)
>123
はあ? 自分で排他制御なんてどうやって書くんだよ
バカも休み休み言え

125
デフォルトの名無しさん (ワッチョイ 677b-dqLr)[]   投稿日:2017/01/15 23:20:48  ID:OwCHVx6x0.n(7)
それは
>84
に言えよ
ってやべー間違ったわアンカー付けたの触ったらダメな奴だった
コメント1件

126
デフォルトの名無しさん (ワッチョイ 1f7b-cG99)[sage]   投稿日:2017/01/15 23:25:26  ID:T6BZe6fz0.n(6)
>115
>あと、「>94が正しくなる」じゃなくて現行の C++14 でも正しいよ。

現行はこれだろ
> Constant initialization (3.6.2) of a block-scope entity with static storage duration, if applicable, is performed before its block is first entered.
つまりブロックスコープのstatic storage durationな変数はそのブロックに最初に入る時に初期化、すなわち実行時
コメント2件

127
デフォルトの名無しさん (ワッチョイ 1f7b-cG99)[sage]   投稿日:2017/01/15 23:30:17  ID:T6BZe6fz0.n(6)
>125
>45
> gcc 4.0.0から既定動作でスレッドセーフなコードが出力される。(自動的に排他制御コードが埋め込まれる。)
こう言う自動的に埋め込まれる排他制御にstd::mutex使えなんて愉快な提案してしたんだろ

> ひんとstd::mutexのコンストラクタはconstexpr修飾されてる

128
デフォルトの名無しさん (ワッチョイ b2cf-YL17)[sage]   投稿日:2017/01/15 23:35:49  ID:6tnmROhD0.n(4)
>126
before は「前」って意味ね。ブロックに入る「時」とまでは限定されてない。

同時に、定数初期化(を含む静的初期化)はあらゆる動的初期化より前に行われる
とする規定があるのは>111で挙げたとおり。

これにより、動的初期化(実行時の初期化)との間で順序が問題になることはない。
コメント1件

129
デフォルトの名無しさん (ワッチョイ 677b-dqLr)[]   投稿日:2017/01/15 23:42:21  ID:OwCHVx6x0.n(7)
>92
の質問が

>非ローカルstatic constexpr変数なら問題ないですよね?

だからブロックスコープの話ですら無いんだけどね。
コメント1件

130
デフォルトの名無しさん (ワッチョイ 1f7b-cG99)[sage]   投稿日:2017/01/16 00:16:22  ID:4D4bT+Tb0.n(7)
>128
ブロックに入る前なので、「実行時の初期化とは無縁」じゃ無いだろ

あと、>111に書かれてるのは現行は
3.6.2 initialization of non-local variables
の規定だね
コメント1件

131
デフォルトの名無しさん (ワッチョイ 3298-los8)[]   投稿日:2017/01/16 00:21:18  ID:UB1GTfE40.n(2)
>121
すぐ解ることって自分で言いながら読めもしないって
言ってる意味わかんねえぜ
検索と規格のどっちが難しいかも逆に認識してるみたいだし
まあ1年目に魔改造されたアタマっちゃそれらしいが

132
デフォルトの名無しさん (ワッチョイ b2cf-YL17)[sage]   投稿日:2017/01/16 00:39:27  ID:5OapSwc60.n(4)
>130
ブロックに入る前、且つ、すべての動的初期化より前、だから「無縁」でもいいんじゃないの?
ローカル static constexpr 変数について初期化順の問題が起こり得るというなら、コード例
出してみてよ。

>114 の「名前」は 3.6.2 のタイトルのこと言ってたのか。ようやくわかった。
でも 3.6.2 のタイトルがどうあれ、>126 で引用した箇所にある "Constant initialization" の
定義は 3.6.2 によるんだから、話は変わらないよ。

誤解を招くタイトル含め文面がマズいのは認めるけど、だからこそ本来の意図に沿うように修正
されたんだろうし。
コメント1件

133
デフォルトの名無しさん (ワッチョイ 1f7b-cG99)[sage]   投稿日:2017/01/16 00:44:11  ID:4D4bT+Tb0.n(7)
>129
実行時の初期化とは無縁の理由として
> 変数にconstexpr付けたらコンパイル時定数になる
をあげている(ローカルでもコンパイル時定数になる)

ところが、コンパイル時定数であってもブロックスコープのConstant initilizationは実行時初期化(ブロックに入る前)なので間違い

134
デフォルトの名無しさん (ワッチョイ 1f7b-cG99)[sage]   投稿日:2017/01/16 01:02:26  ID:4D4bT+Tb0.n(7)
>132
6.3.2を参照してるのはConstant initializerの定義だけ、
その初期化が行われるタイミングは6.7に書かれている通りブロックに入る前
ロード後、プログラムに制御が移る前かもしれないし、mainが呼び出された後かもしれない
コメント2件

135
デフォルトの名無しさん (ワッチョイ b2cf-YL17)[sage]   投稿日:2017/01/16 01:17:19  ID:5OapSwc60.n(4)
>134
Constant initializer じゃなくて Constant initialization の定義ね。
その Constant initialization に対する規定がローカル static の場合だけ
無視できるとする根拠が何かあるの?

136
デフォルトの名無しさん (ワッチョイ 1f7b-cG99)[sage]   投稿日:2017/01/16 02:10:36  ID:4D4bT+Tb0.n(7)
> その Constant initialization に対する規定がローカル static の場合だけ
> 無視できるとする根拠が何かあるの?
6.7で参照してるConstant initializationは
3.6.2のConstant initialization is performed:の下で3つ列挙されてる部分
定義であって、初期化のタイミングは参照していない それぞれに別の記述がある

タイミングは何度も引用してるけど6.7は
> Constant initialization (3.6.2) of a block-scope entity with static storage duration, if applicable, is performed before its block is first entered.

3.6.2は
> Together, zero-initialization and constant initialization are called static initialization; all other initialization is dynamic initialization. Static initialization shall be performed before any dynamic initialization takes place.
コメント1件

137
デフォルトの名無しさん (ワッチョイ b2cf-YL17)[sage]   投稿日:2017/01/16 02:53:47  ID:5OapSwc60.n(4)
>136
別の記述があることが根拠?
それら2つの規定の両方が適用され得るだろうと言ってるんだけど、
なんでどっちか片方しか適用されないと思ってるの?

A ⊃ B の場合に A に対する規定が B にも及ぶってことを認めないの?
(この場合は A = "Constant initialization", B = "Constant initialization of a block-scope entity")
コメント1件

138
デフォルトの名無しさん (オッペケ Sr37-U8Ig)[sage]   投稿日:2017/01/16 07:40:40  ID:a6XjHitHr.n(2)
>137
>134の主張は3.6.2, 6.7のどちらとも矛盾しないように見えるのだが
コメント1件

139
デフォルトの名無しさん (ワッチョイ 1f7b-cG99)[sage]   投稿日:2017/01/16 08:43:01  ID:4D4bT+Tb0.n(7)
むしろ
3.6.2 initialization of non-local variables
と、明確に分けられてる項の規定が全部適用されると言ってるのが不思議過ぎる

http://wg21.cmeerw.net/cwg/issue2026もバグ指摘されてるし、前途多難だ

140
デフォルトの名無しさん (ワッチョイ b2cf-YL17)[sage]   投稿日:2017/01/16 09:38:47  ID:5OapSwc60.n(4)
>138
タイミングについての言及だけ読めばそうだけど、彼は 3.6.2 にある静的初期化一般に対する規定が
ローカル static の場合に限っては及ばない、とする主張をしている。


新しい理由付けも出なくなって平行線みたいだし、次期規格ではざっくり改定される文面の話だし、
もういいかな。

141
デフォルトの名無しさん (ワッチョイ 1f7b-cG99)[sage]   投稿日:2017/01/16 10:48:30  ID:4D4bT+Tb0.n(7)
3.6.2のnon-localに関する規定は6.7で「そのブロックに入る前」と上書きされてるだろ
3.6.2がlocal, non-local問わずに有効なら「そのブロックに入る前」と言う規定は矛盾する
コメント1件

142
デフォルトの名無しさん (スプッッ Sdf2-9KqD)[]   投稿日:2017/01/16 11:01:51  ID:ULOq3Vpcd.n
https://cpprefjp.github.io/reference/atomic/atomic.html
atomicを使ったspinlockなるmutexの例があるのですが
これを再帰ロック可能なrecursive_spinlockにするには
どのように実装すればいいですか。

143
デフォルトの名無しさん (オッペケ Sr37-U8Ig)[sage]   投稿日:2017/01/16 19:11:32  ID:a6XjHitHr.n(2)
>141
「ブロックに入る前、且つ、すべての動的初期化より前」
規格がUNKOなのはさておき、論理的にどこも矛盾していないのでは?

144
デフォルトの名無しさん (ワントンキン MMe2-dqLr)[]   投稿日:2017/01/16 19:40:06  ID:LWQyQSVNM.n
仮にブロックスコープのconstexpr変数が実行時に初期化されたとして、どんな問題が発生するという主張なん?
コメント3件

145
デフォルトの名無しさん (ワッチョイ 3298-los8)[]   投稿日:2017/01/16 22:29:50  ID:UB1GTfE40.n(2)
翻訳時に評価せよと指定したものが
実行時に評価されるようなら
コンパイラを窓から投げ捨てて
アセンブラか機械語を使うしかない

int main() { return 1; }で0を返されるのと同じで
もはや何を言っても無駄、根本的に話にならないということ
コメント2件

146
デフォルトの名無しさん (ワッチョイ 1f7b-cG99)[sage]   投稿日:2017/01/16 23:04:39  ID:4D4bT+Tb0.n(7)
>145
初期化の意味がわからない子は参戦しないように
コメント1件

147
デフォルトの名無しさん (オッペケ Sr37-U8Ig)[sage]   投稿日:2017/01/16 23:23:13  ID:+uglxnZcr.n
>144
特に実害はなくても>94の『実行時の初期化とは無縁』が真実でないことを問題と考える者がいるのだと思っていた

148
デフォルトの名無しさん (ワントンキン MMe2-dqLr)[]   投稿日:2017/01/17 03:28:47  ID:tvPWGsMMM.n
なんというか糞の役にもたたんな
今現在そんな実装のコンパイラがあるわけでもなし、今から実装するにしてもわざわざ複雑にして実行速度落とすような実装にするとも思えないし

149
デフォルトの名無しさん (ワッチョイ a258-rG+u)[sage]   投稿日:2017/01/17 04:25:31  ID:ngprCvv90.n
最近猫でもわかるって奴読んで独学でちょくちょく勉強してんだけど、こんまま独学でプログラミング学んでったらオセロくらいなら作れるようになる?どんくらいかかるかな
コメント1件

150
デフォルトの名無しさん (ドコグロ MM0a-8ZdN)[sage]   投稿日:2017/01/17 07:56:18  ID:ueZ17iDzM.n
>144
組み込みじゃ、ROMになるかRAMになるか大きな違いが出るな
コメント2件

151
デフォルトの名無しさん (ワッチョイ 677b-dqLr)[]   投稿日:2017/01/17 13:27:45  ID:mkv39b380.n
>150
constすら付けなくても初期値が決まっていて変更する可能性のあるコードが無ければ最適化で定数に置き換えられる時代にそんな事気にするんだ?
コメント1件

152
デフォルトの名無しさん (ワッチョイ b624-los8)[]   投稿日:2017/01/17 13:30:54  ID:Pbl2vPGV0.n
>146
おい間抜け
どこかに初期化って書いてあったか?
人を小馬鹿にしたつもりだろうがブーメラン刺さってるぞw
コメント1件

153
デフォルトの名無しさん (ワッチョイ 3e5b-vSov)[sage]   投稿日:2017/01/17 22:57:29  ID:FvzokP9y0.n
>149
オセロくらいなら excel と vba で一週間くらい集中すればできんじゃないかね。
コメント1件

154
デフォルトの名無しさん (ワッチョイ 4f17-0Plu)[sage]   投稿日:2017/01/18 01:28:58  ID:9W34sy+b0.n
>153
アスペ

155
デフォルトの名無しさん (ワッチョイ 6296-8ZdN)[sage]   投稿日:2017/01/18 01:54:34  ID:an9uI7uk0.n
>151
定数が実行時に初期化されれば、それはROMじゃなくてRAMに配置されてるってことだろ?そりゃ組み込みなら気にならないほうがおかしい
コメント1件

156
デフォルトの名無しさん (ワッチョイ 677b-dqLr)[]   投稿日:2017/01/18 02:36:42  ID:n1DpjkbT0.n(2)
>155
int f(){static int v=5;return v;}

int f(){return 5;}
が最適化後は一緒になるって言ってんの。
そして
static constexpr int v=...;
にしたらそのvの初期化値はコンパイル時に求まるし変更出来ない。ここまで言えば最適化後にどうなるか解るよね?
まぁ、constexprの場合は最適化しなくてもなんだけどさ
コメント2件

157
デフォルトの名無しさん (ワッチョイ b2cf-YL17)[sage]   投稿日:2017/01/18 03:40:09  ID:2vnfhfI50.n
>156
>150>144の言った「仮に・・・」へのレスなんだから現実のコンパイラがどうなってるかは関係ないと思われ
コメント1件

158
デフォルトの名無しさん (ドコグロ MM9f-lGK7)[sage]   投稿日:2017/01/18 07:14:44  ID:KfZHaLf7M.n
定数であることと ROM に置くかどうかは別の話だし
コメント1件

159
デフォルトの名無しさん (ワッチョイ 573c-U8Ig)[sage]   投稿日:2017/01/18 08:00:45  ID:+X3tak3t0.n
>156
>最適化後は一緒になるって言ってんの
デバッグ中の挙動を無視されると困ります
コメント1件

160
デフォルトの名無しさん (ワッチョイ 677b-dqLr)[]   投稿日:2017/01/18 08:42:08  ID:n1DpjkbT0.n(2)
>157
ごもっとも。規格がどうかも関係なかったね。
>159
なんで?

161
デフォルトの名無しさん (ブーイモ MMd2-a69X)[sage]   投稿日:2017/01/18 08:52:41  ID:ZS0nd/enM.n
>158
定数であるからromにも置けるって話なんで関係ない訳がない。
コメント1件

162
デフォルトの名無しさん (ドコグロ MM4e-lGK7)[sage]   投稿日:2017/01/18 18:41:42  ID:Abs9KEqJM.n
>161
> 定数であるからromにも置ける
だからと言ってROMに置くとは限らない
って話なんだがお前には難しすぎたか?
コメント1件

163
デフォルトの名無しさん (アウアウカー Sa5f-YGRn)[sage]   投稿日:2017/01/18 21:27:37  ID:4GI0Tt+ca.n
このスレを見て、C++って永遠に喧嘩できて寂しくない言語だと判った

164
デフォルトの名無しさん (ワッチョイ 3e5b-vSov)[sage]   投稿日:2017/01/18 21:56:10  ID:qB5vepR/0.n
こういうやりとり見てるとやっぱリーナスの c++観は正しいなと思う。

165
デフォルトの名無しさん (ブーイモ MM8b-a69X)[sage]   投稿日:2017/01/18 23:18:53  ID:0GLHJE+5M.n
>162
置けるってのは置くこともできるって意味だが、随分日本語不自由なやつだな
コメント1件

166
デフォルトの名無しさん (ドコグロ MM7f-j6UX)[sage]   投稿日:2017/01/19 06:46:32  ID:JadLiFtgM.n
>165
> 随分日本語不自由なやつだな
「置ける」と言う可能性の話と「置く」と言う実際の動作の区別がつかない奴に言われても...
でっかいブーメラン乙としか言いようがないわな w

167
デフォルトの名無しさん (ワッチョイ 037b-rTuY)[]   投稿日:2017/01/19 06:57:37  ID:bO+XZlhy0.n(3)
何を言い争ってんのか解らん
直値でもROMに置けると言えるだけでなんの違いも無いんだが。
コメント2件

168
デフォルトの名無しさん (ワッチョイ 637b-voKO)[sage]   投稿日:2017/01/19 08:39:21  ID:4Gh/dudO0.n
>152
初期化==評価と考えてなけりゃ >145は出てこねーんだよ バーカ
コメント1件

169
デフォルトの名無しさん (スプッッ Sd1f-xrkK)[]   投稿日:2017/01/19 10:16:43  ID:CldDY8MLd.n(2)
int a=100;
int&& b=std::move(static_cast<int>(a));
b=200;
aは100、bは200になるのですが
キャストすると必ず一時オブジェクトが生成されるのでしょうか
環境によってaもbも200になったりしますか。
コメント2件

170
デフォルトの名無しさん (ワッチョイ ffcf-JQ1R)[sage]   投稿日:2017/01/19 10:39:40  ID:gPdsJo1i0.n

171
デフォルトの名無しさん (スプッッ Sd1f-xrkK)[]   投稿日:2017/01/19 10:50:03  ID:CldDY8MLd.n(2)
わかりました

172
デフォルトの名無しさん (ワッチョイ 23c9-mcUU)[sage]   投稿日:2017/01/19 11:10:02  ID:ipEwSksA0.n
次に、「ボクのパソコンではaが200になるんてすけど」というレスが来るに違いない

173
デフォルトの名無しさん (ドコグロ MMff-j6UX)[sage]   投稿日:2017/01/19 12:54:31  ID:Ccs4bPhGM.n
>167
わからないなら絡んでくるなよ w
コメント1件

174
デフォルトの名無しさん (オッペケ Sr87-mcUU)[sage]   投稿日:2017/01/19 14:28:16  ID:oLhGNghYr.n
>169
>環境によってaもbも200になったりしますか

Yes

175
デフォルトの名無しさん (ワッチョイ bfcb-SmTw)[]   投稿日:2017/01/19 20:26:21  ID:+cE5RWPo0.n
どっちですか

176
デフォルトの名無しさん (ワッチョイ cf24-RK9q)[]   投稿日:2017/01/19 21:29:45  ID:x+icVyy10.n
>173
わからないなら絡まれたフリをするなよw
おまえに教えを請うようなクズの中のクズはさすがにこのスレにもいないだろうから
コメント1件

177
デフォルトの名無しさん (ドコグロ MMff-j6UX)[sage]   投稿日:2017/01/19 21:35:22  ID:ylWIT8ZQM.n
>176
わからんって言ってるのは俺じゃなくて >167 なんだが...
色々お前には難しすぎたか? w

178
デフォルトの名無しさん (ワッチョイ 037b-rTuY)[]   投稿日:2017/01/19 21:54:21  ID:bO+XZlhy0.n(3)
何を言い争ってんのかわからん。

179
デフォルトの名無しさん (ワッチョイ ff6c-L1Ju)[sage]   投稿日:2017/01/19 21:55:13  ID:f8wSWc2J0.n
いいのよ
コメント1件

180
デフォルトの名無しさん (ワッチョイ 037b-rTuY)[]   投稿日:2017/01/19 21:56:39  ID:bO+XZlhy0.n(3)
>179
ありがとう

181
デフォルトの名無しさん (アウアウカー Sac7-WqDQ)[sage]   投稿日:2017/01/20 02:35:51  ID:WXRyG1p+a.n
最近この喧嘩は自演じゃないかと思ってる

182
デフォルトの名無しさん (ワッチョイ f302-JQ1R)[sage]   投稿日:2017/01/20 08:56:02  ID:1CC8R4dK0.n
ここで出た話題のTips集を出したら売れるんじゃないかと思えてきたわ
コメント1件


183
デフォルトの名無しさん (スプッッ Sd1f-ddg/)[sage]   投稿日:2017/01/20 18:53:55  ID:zIVGmPHgd.n
32bitのソフトを64bit対応させようかなって考えてるのだけど
printf, winapi, _t型変数以外気を付けることある?俺これやってはまったわみたいなのが知りたい

184
デフォルトの名無しさん (ワッチョイ cf24-RK9q)[]   投稿日:2017/01/20 23:36:02  ID:GZ99lyBK0.n
>168
いーや、初期値==評価とは考えずに書いた
事実とおまえの考えは完全が食い違っているんだよ
せいぜい妄想の世界で自画自賛してろナルシスト
コメント1件

185
デフォルトの名無しさん (ワッチョイ 637b-voKO)[sage]   投稿日:2017/01/21 01:01:56  ID:v+i75+9D0.n
>184
引っかかりやがった
初期化の話題で評価と言い出しのはテメーだ バーカ
コメント1件

186
デフォルトの名無しさん (ワッチョイ cf7b-5ScM)[sage]   投稿日:2017/01/21 01:52:25  ID:RmTA4cQd0.n
江添はなんて言ってる?

187
デフォルトの名無しさん (アウアウカー Sac7-WqDQ)[sage]   投稿日:2017/01/21 11:02:38  ID:Bf4L6OzOa.n
それワイのやつや!

188
デフォルトの名無しさん (ワッチョイ cf24-RK9q)[]   投稿日:2017/01/22 00:06:25  ID:LwmXYJhf0.n(2)
>185
だから初期化ってどこに書いてあるんだよ
幻視か? だからリスパダールちゃんと飲めとあれほど・・・

189
デフォルトの名無しさん (ワッチョイ cf7b-rTuY)[]   投稿日:2017/01/22 00:24:56  ID:77/TNfJH0.n
>182
こんなのどうやってまとめるんだ…

190
デフォルトの名無しさん (ワッチョイ bfcb-xrkK)[]   投稿日:2017/01/22 02:31:51  ID:hchjfZjx0.n(2)
江口はなんて?

191
デフォルトの名無しさん (ワッチョイ 6f56-3qL8)[sage]   投稿日:2017/01/22 02:40:24  ID:rrJzCAZR0.n(3)
教えて下さい。
環境は VisualC++2015 x64 です。

与えられた文字列の引数について、1文字が1バイトなのか、2バイトなのかで呼び出す関数を切り分けたいと思い、SFINAE で以下のようなコードを書きました。
しかし、こののコードで「関数A」を呼んで欲しいのに、「関数B」が呼ばれてしまいます。

- なぜ関数Bが呼ばれるのか
- 1文字のバイト数で切り替える手段

この2点について、教えて下さい。よろしくお願いします。

extern void* enabler;

// 関数A (本当は1文字が1バイトの時用の関数)
template <typename STR, std::enable_if_t<sizeof(decltype(std::remove_all_extents<STR>::type()[0])) == 1> *& = enabler>
void hoge(const STR&)
{
}

// 関数B (本当は1文字が2バイトの時用の関数)
template <typename STR, std::enable_if_t<sizeof(decltype(std::remove_all_extents<STR>::type()[0])) != 1> *& = enabler>
void hoge(const STR&)
{
int tmp;
tmp = sizeof(decltype(std::remove_all_extents<STR>::type()[0])); // どういう訳か tmp == 1 となる
}

void main()
{
std::string s;
hoge(s); // 1バイト版である、関数Aを呼んで欲しい
}
コメント2件

192
片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK27-o4cX)[sage]   投稿日:2017/01/22 03:05:41  ID:NkQzBql/K.n(2)
>191
1 charは常に2バイトではない。あなたはマルチバイト文字列の基礎を理解していないようだ。
マルチバイト文字列中の複数のcharが一文字になっているか否かは、
文字列の先頭から1charごとにcharの値の範囲を確認し、lead byteかtrail byteかを判定するしかない。
コメント1件

193
デフォルトの名無しさん (ワッチョイ bfcb-SmTw)[]   投稿日:2017/01/22 03:12:07  ID:hchjfZjx0.n(2)
ビルド通らないからなんでかはわかんない

template <typename STR, std::enable_if_t< sizeof( typename STR::value_type ) == 1, std::nullptr_t > SFINAE = nullptr >
void hoge(const STR&)
{
}

template <typename STR, std::enable_if_t< sizeof( typename STR::value_type ) != 1, std::nullptr_t > SFINAE = nullptr >
void hoge(const STR&)
{
}

これでいけない?

194
片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK47-o4cX)[sage]   投稿日:2017/01/22 03:12:21  ID:NkQzBql/K.n(2)
型情報からはマルチバイト文字列のlead/trailに関する情報は得られない。よって、各charの値の範囲を実際に確認しないと、わからない。

195
デフォルトの名無しさん (ワッチョイ 23c9-mcUU)[sage]   投稿日:2017/01/22 07:14:06  ID:7mC+0LM10.n(5)
>192
日本語が理解できないボケ老人は去れ

196
デフォルトの名無しさん (ワッチョイ a37d-wsSS)[sage]   投稿日:2017/01/22 08:04:55  ID:5o7PrILb0.n
>191
例のコンパイラがぶっ壊れてるんだろうね
gccは期待通り
http://ideone.com/9pSqel

197
デフォルトの名無しさん (ワッチョイ 037b-rTuY)[]   投稿日:2017/01/22 08:28:45  ID:gigvK4EO0.n(3)
オーバーロードでよくね

198
191 (ワッチョイ 6f56-3qL8)[sage]   投稿日:2017/01/22 08:37:36  ID:rrJzCAZR0.n(3)
>192-196
ありがとうございます。

>193
確かに期待通りの動作をします。
ただ、この先 MFC の CStringA, CStringW, 生配列などを仮引数として与えたいため、operator[] の戻り値で判定出来ないか考えていました。

>196
なるほど。コンパイラの問題くさいので代替案を考えてみます。
ありがとうございました。

199
191 (ワッチョイ 6f56-3qL8)[sage]   投稿日:2017/01/22 08:50:18  ID:rrJzCAZR0.n(3)
>192-197

下の様に、sizeof, decltype を移動させたら、あっさり動きました。失礼しました。

template <typename STR>
struct helper
{
enum {
item_size = sizeof(decltype(STR()[0])),
};
};

extern void* enabler;

// 1バイト版
template <typename STR, typename std::enable_if<helper<STR>::item_size == 1>::type *& = enabler>
void hoge(const STR&)
{
}

// 2バイト版
template <typename STR, typename std::enable_if<helper<STR>::item_size == 2>::type *& = enabler>
void hoge(const STR&)
{
}

void main() {
std::string a;
hoge(a); // 1バイト版
std::wstring w;
hoge(w); // 2バイト版
}
コメント1件

200
デフォルトの名無しさん (ワッチョイ 237b-rTuY)[]   投稿日:2017/01/22 09:58:50  ID:iEDujvJA0.n

201
デフォルトの名無しさん (ワッチョイ f302-JQ1R)[sage]   投稿日:2017/01/22 13:37:19  ID:gnARoY8z0.n
CStringとかまだ存在してたのかよ

202
デフォルトの名無しさん (ワンミングク MM9f-aDhR)[sage]   投稿日:2017/01/22 14:40:31  ID:hBhrTyQGM.n

203
デフォルトの名無しさん (ワッチョイ ffcf-JQ1R)[sage]   投稿日:2017/01/22 15:06:13  ID:paMlvMvI0.n
>199
sizeof(decltype(STR()[0])) って sizeof(STR()[0]) と何か違ったっけ?
コメント1件

204
デフォルトの名無しさん (ワッチョイ 23c9-mcUU)[sage]   投稿日:2017/01/22 15:53:04  ID:7mC+0LM10.n(5)
mainがvoidなレベルの人にそんな突っ込みをしても…

205
デフォルトの名無しさん (ワッチョイ cf24-RK9q)[]   投稿日:2017/01/22 20:43:26  ID:LwmXYJhf0.n(2)
戻らないmainについてもガタガタ言っちゃう人がねえ

206
デフォルトの名無しさん (ワッチョイ 037b-rTuY)[]   投稿日:2017/01/22 22:57:58  ID:gigvK4EO0.n(3)
mainのreturnは省略したら0が返ることが保証されている
コメント1件

207
デフォルトの名無しさん (ワッチョイ 23c9-mcUU)[sage]   投稿日:2017/01/22 22:59:58  ID:7mC+0LM10.n(5)
>206
当たり前のことを言い出して、いきなりどうした
コメント1件

208
デフォルトの名無しさん (ワッチョイ 037b-rTuY)[]   投稿日:2017/01/22 23:01:08  ID:gigvK4EO0.n(3)
>207
戻らないmain(?)へ宛
コメント1件

209
デフォルトの名無しさん (ワッチョイ 23c9-mcUU)[sage]   投稿日:2017/01/22 23:14:20  ID:7mC+0LM10.n(5)
>208
なるほど理解した
『戻らないmain』は[[noreturn]]のことだと思ったので理解できずスルーしていた
人に『リスパダールちゃんと飲めとあれほど』と言って自分が飲み忘れたのかと

210
デフォルトの名無しさん (ワッチョイ 23c9-mcUU)[sage]   投稿日:2017/01/22 23:26:22  ID:7mC+0LM10.n(5)
>203
CStringは知らないが、stringは恐らく同じ
sizeof(STR()[0])
 →sizeof (char &型の左辺値)
 →sizeof (char)と同じ
sizeof(decltype(STR()[0]))
 →sizeof (decltype(char &型の左辺値))
 →sizeof (char &型)
 →sizeof (char)と同じ

211
191 (アウアウカー Sac7-/Qox)[sage]   投稿日:2017/01/23 09:48:36  ID:SwVOU3U8a.n
>203
vc++2015で deltype をぬくと、関数に[] は出来ません、みたいなエラーで通りませんでした。
STR()をコンストラクタではなく、関数と思ってるんだと思います。
コメント1件

212
デフォルトの名無しさん (オッペケ Sr87-mcUU)[sage]   投稿日:2017/01/23 17:40:29  ID:oJYEiyR6r.n
宣言に解釈できるときは宣言として解釈
みたいなルールだっけ

213
デフォルトの名無しさん (ワッチョイ ff9f-tc54)[sage]   投稿日:2017/01/23 18:40:50  ID:FReCyx8S0.n
コンストラクタ ⊆ 関数

214
デフォルトの名無しさん (アウアウカー Sac7-WqDQ)[sage]   投稿日:2017/01/23 19:40:02  ID:Ij4EmhsFa.n
アンダーバー要らなくね?

215
デフォルトの名無しさん (ワッチョイ ffcc-DOWB)[sage]   投稿日:2017/01/24 03:03:03  ID:ch78KtiL0.n
MFCとか何処のバカが設計したんだろうな
とっくに絶滅しているもんだとおもっていたぜw

216
デフォルトの名無しさん (ワッチョイ 037b-rTuY)[]   投稿日:2017/01/24 03:50:21  ID:nvNd8iP10.n
それより優れたものを設計してから言えよな
コメント1件

217
デフォルトの名無しさん (ワッチョイ f302-JQ1R)[sage]   投稿日:2017/01/24 03:56:08  ID:Af36V4kC0.n
>216←今日のバカ

218
デフォルトの名無しさん (ワッチョイ 137b-Eksc)[]   投稿日:2017/01/24 11:11:02  ID:dVVoZ7Su0.n
MFCが作られた時代を考えられないやつのほうがバカなんだよなあ
あれはWin32APIの薄いラッパでしかないから
文句あるなら別のライブラリを使えばいいだけの話、それも出来ないならやっぱりお前が無能でバカ

219
デフォルトの名無しさん (スップ Sd1f-xrkK)[]   投稿日:2017/01/24 11:33:11  ID:9X3I9Jqtd.n(2)
int (*func)(int) = &hoge;
func = nullptr;

funcへの代入をできないようにconst付けたいのですが
どう書けばいいですか。
usingやtypedefは使わない方法でお願いします。

あとメンバ関数への参照はどう記述すればいいですか
int (hage::*func)(int) = &hage::test;
の参照版です
コメント2件

220
デフォルトの名無しさん (アウアウカー Sac7-WqDQ)[sage]   投稿日:2017/01/24 11:41:16  ID:GCEfrzc1a.n
益のない煽りはよしなよ(・ิω・ิ)

221
デフォルトの名無しさん (ワッチョイ 7330-J7L1)[sage]   投稿日:2017/01/24 12:11:20  ID:ekWjtoGq0.n
>219
int (* const func)(int) = &hoge;

int (piyo::* mf0)(int) = &piyo::test;
int (piyo::* & mf1)(int) = mf0;

int (piyo::* const & mf2)(int) = &piyo::test;
コメント1件

222
デフォルトの名無しさん (ワッチョイ ffcf-JQ1R)[sage]   投稿日:2017/01/24 12:13:02  ID:NfDXKGen0.n(2)
>211
そっか sizeof だと式と型の曖昧さが問題になるけど decltype なら式しか取らないから曖昧さを消せるのか。

223
デフォルトの名無しさん (ワッチョイ ffcf-JQ1R)[sage]   投稿日:2017/01/24 12:13:28  ID:NfDXKGen0.n(2)
>219
[dcl.mptr]/3 (Note) "There is no "reference-to-member" type in C++."

224
デフォルトの名無しさん (スップ Sd1f-xrkK)[]   投稿日:2017/01/24 12:19:40  ID:9X3I9Jqtd.n(2)
>221
それだとメンバ関数のポインタの参照になってませんか
int (&func)(int) = hoge;
のメンバ関数版はできないでしょうか

constの件はうまくいきました
コメント1件

225
デフォルトの名無しさん (ワッチョイ ffd9-iijN)[sage]   投稿日:2017/01/24 13:24:18  ID:kmpgWA440.n
>224
thisが必要になるから無理なんじゃないの
それよりクラス内でメンバ関数へのポインタを書くとthisが必要になる

226
デフォルトの名無しさん (ワッチョイ 6f5b-OQjX)[sage]   投稿日:2017/01/24 21:23:55  ID:GIi5sfFU0.n
一生こういう些末なところに引っかかって
中身を書けない人生を送るんだろうな〜

227
デフォルトの名無しさん (ワッチョイ cf42-Wde1)[sage]   投稿日:2017/01/25 00:27:17  ID:I9ZrCxSQ0.n
uint8_tとbasic_ifstream組み合わせるといろいろ面倒なんだけど、みなバイナリファイル読み込むときどうしてんの?普通にchar使っ使う?

228
デフォルトの名無しさん (オッペケ Sr87-mcUU)[sage]   投稿日:2017/01/25 00:35:21  ID:KGxAJ6V6r.n
バイナリでchar使うのは30年前の老人の発想
コメント2件

229
デフォルトの名無しさん (ササクッテロレ Sp87-Taza)[sage]   投稿日:2017/01/25 00:51:14  ID:/+qbj4+Vp.n
fopenでおk

230
デフォルトの名無しさん (ワッチョイ 037b-rTuY)[]   投稿日:2017/01/25 01:30:42  ID:5KwEWhG70.n
他の型をバイト列として解釈するときは(unsigned )charしか許されてないから普通にchar使う
コメント1件

231
デフォルトの名無しさん (ワッチョイ ff17-SmTw)[]   投稿日:2017/01/25 02:33:17  ID:LUWqNFoa0.n
fgetc() の戻り値を直接 char 変数に代入して EOF(=-1)判定するヘマ。あるある

232
デフォルトの名無しさん (ワンミングク MM9f-cBXx)[sage]   投稿日:2017/01/25 04:12:15  ID:nJO+CT7AM.n(2)
ねぇよ


233
デフォルトの名無しさん (アウアウウー Sa67-OTU1)[sage]   投稿日:2017/01/25 15:31:39  ID:uJriqNlza.n
fopen、fgets系は使わないな。処理をFILE*依存にしたくない

>230
>228が言ってるのはそういう意味のcharじゃないでしょ

234
デフォルトの名無しさん (ワッチョイ cf24-RK9q)[]   投稿日:2017/01/25 21:44:43  ID:gbQNFS3L0.n
FILE*に依存しないとしてじゃあ何を使うんだ?
intにも依存したくないのか?

235
デフォルトの名無しさん (ワンミングク MM9f-cBXx)[sage]   投稿日:2017/01/25 22:01:41  ID:nJO+CT7AM.n(2)
fileno して read/writeかな

236
デフォルトの名無しさん (ワッチョイ aacc-X95Y)[sage]   投稿日:2017/01/26 00:52:19  ID:GN6UrdAH0.n
おまいら相変わらず抵レベルな話題しているな

237
デフォルトの名無しさん (ワッチョイ 6f02-FuHd)[sage]   投稿日:2017/01/26 02:07:00  ID:cRvsGxqc0.n
高レベルな人が2ch何か見てるわけないからな
コメント1件

238
デフォルトの名無しさん (ワッチョイ 2613-AZYz)[sage]   投稿日:2017/01/26 06:24:12  ID:XBNxNxvo0.n
>237
FILE * を使う人はどうして2chをみないのか?iostream な人はどうなるのか?

239
デフォルトの名無しさん (スップ Sdca-kwgD)[]   投稿日:2017/01/26 08:04:45  ID:fFyxUIyid.n
プログラミングにはCBDオイルというのが有効だそうです。アイデアが治療に有効するので安倍内閣総理大臣も持病に使っているそうです。
ビル・ゲイツもこれで億万長者になれました

240
デフォルトの名無しさん (JP 0H16-T3y8)[sage]   投稿日:2017/01/26 13:11:34  ID:lD0mvySBH.n
低レイヤーな釣りですね

241
デフォルトの名無しさん (ワッチョイ 3e24-XYXB)[]   投稿日:2017/01/26 18:22:33  ID:A9/xu7Tb0.n
物理層?

242
デフォルトの名無しさん (ワッチョイ aacc-X95Y)[sage]   投稿日:2017/01/29 15:48:31  ID:Hm/zwJzS0.n
この処理低レベルだねぇと言われてムキーっとなるヤツ→素人童貞
この処理低レベルだねぇと言われて得意げにほくそ笑むヤツ→玄人

243
デフォルトの名無しさん (ワッチョイ af7b-FuHd)[sage]   投稿日:2017/01/29 16:07:03  ID:K+/fnyLa0.n
すみません 低レベルな処理がが好きなんで

244
デフォルトの名無しさん (ワッチョイ 1bc9-kHcU)[sage]   投稿日:2017/01/29 16:12:04  ID:2ZaFXkbr0.n
環境・処理系固有の事情やバグに悩まされてばかりで
幸せな顔をして仕事をしている人を見たことがない

245
デフォルトの名無しさん (アウアウカー Sa5b-seiz)[sage]   投稿日:2017/01/29 16:31:19  ID:sujTTxNda.n
低レイヤって言えばいいのよ

246
デフォルトの名無しさん (ワッチョイ 0ac0-H6k8)[sage]   投稿日:2017/01/29 22:01:55  ID:F8NpKYaN0.n
コスプレイヤーの仲間かな

247
デフォルトの名無しさん (ワッチョイ 3e24-BAqL)[]   投稿日:2017/01/30 21:07:15  ID:P5tJpKPw0.n
>228
std::fstream::readの引数が【なぜ】charなのか
理解できないアフォ?

248
デフォルトの名無しさん (ワッチョイ 6fc9-a+zf)[sage]   投稿日:2017/02/01 22:16:18  ID:zf0e/zUB0.n
30年前の設計だからだ!

249
デフォルトの名無しさん (ワントンキン MM1a-9Rjx)[]   投稿日:2017/02/01 22:52:40  ID:mWAIN14mM.n
むしろバイナリでchar以外何使うんだ?

250
デフォルトの名無しさん (ワッチョイ 137b-1ST5)[sage]   投稿日:2017/02/02 00:40:35  ID:kju30PyH0.n
いやバイナリならどう読もうが書こうがいいと思うが。
てか疑問の意味がわからん。
コメント1件

251
デフォルトの名無しさん (ワッチョイ 7fcf-1ST5)[sage]   投稿日:2017/02/02 01:35:32  ID:FXYEZ0RW0.n
>250 そんなんじゃ type based aliasing rule に殺されるよ

252
デフォルトの名無しさん (ワッチョイ 1302-1ST5)[sage]   投稿日:2017/02/02 01:58:08  ID:hMTSyXzS0.n
何か動作がおかしいときになってから考えれば良いんだよ
標準的な環境では考える必要は無いこと

253
デフォルトの名無しさん (ワッチョイ cf24-1aN8)[]   投稿日:2017/02/02 22:10:32  ID:1pIxEkoa0.n
真性アフォが早くも三名か。嘆かわしい。

254
デフォルトの名無しさん (オッペケ Sra7-dUno)[sage]   投稿日:2017/02/03 08:10:44  ID:HxuiJzZXr.n
真性のアフォの内の二人くらいは
たいてい片山の自演

255
デフォルトの名無しさん (スップ Sd9f-aC2u)[sage]   投稿日:2017/02/03 13:51:28  ID:+x5EsLXNd.n(2)
新卒一年目で過去のコードをバージョンアップさせる業務についてるんだけど
会社のコードってなんであんなにdefine切ったりtypedefしまくってるんだ?
可読性低くない?始めて作った人には良いだろうけど後のこと考えるとデメリットなんではって思うんだけど...
コメント2件

256
デフォルトの名無しさん (ワッチョイ 6f6c-i1/f)[sage]   投稿日:2017/02/03 13:57:14  ID:Fv/X2f+d0.n
場合によるからなんとも
コメント1件

257
デフォルトの名無しさん (ワッチョイ 7f7b-1ST5)[sage]   投稿日:2017/02/03 15:21:22  ID:cyynpkXi0.n
一年目か凄いね

258
デフォルトの名無しさん (アウアウカー Sae7-mIyn)[sage]   投稿日:2017/02/03 16:26:23  ID:oWJS3iiDa.n
スマン、片山って誰ンゴ?

259
デフォルトの名無しさん (スップ Sd9f-aC2u)[sage]   投稿日:2017/02/03 17:44:58  ID:+x5EsLXNd.n(2)
>256
それを言っちゃあおしまいだよ...と言いたいけどまさにそうか
windowsapiが絡んでくると本当にわけがわからなくなる
MSDNも読みにくいし

260
デフォルトの名無しさん (ブーイモ MMc7-plQq)[sage]   投稿日:2017/02/03 19:35:01  ID:8SRwU46KM.n
参考までに、どんなdefIneやtypedefなん?
コメント1件

261
デフォルトの名無しさん (ワントンキン MM1f-fOGj)[sage]   投稿日:2017/02/03 21:14:55  ID:DgoKILm5M.n
>255
情報が増えるtypedefは正義
たとえば、
typedef std::vector<int> personal_id_array_type;

減るtypedefはゴミ
たとえば、
typedef std::vector<int> array_type;
コメント2件

262
デフォルトの名無しさん (ワッチョイ a3a6-0MWP)[sage]   投稿日:2017/02/03 21:24:44  ID:2s9sq5BM0.n
>261
情報の増減がどこにあると?

263
デフォルトの名無しさん (ワッチョイ 937b-aC2u)[sage]   投稿日:2017/02/03 21:43:49  ID:flkT/o5k0.n
>260
>261の前者・後者両方ともある
あと色々な名前で__stdcallが切られてたりして読むのがきつい

264
デフォルトの名無しさん (ワッチョイ a37b-jpzQ)[]   投稿日:2017/02/03 22:05:00  ID:ubtIaYbs0.n
ちなみにお前らの思うきれいなソースって具体的にどれよ
コメント1件

265
デフォルトの名無しさん (スッップ Sd9f-oUAv)[]   投稿日:2017/02/03 22:11:40  ID:7t2mdctmd.n
glm

266
デフォルトの名無しさん (ワッチョイ cf24-1aN8)[]   投稿日:2017/02/03 22:55:16  ID:aXFSiqlm0.n
261が言ってるのは
システムハンガリアンとアプリケーションハンガリアンてことだ
ハンガリー記法に限らず意味づけと言うまでもないことを
どう位置づけるべきかってこと

267
デフォルトの名無しさん (ワッチョイ c35b-0MWP)[sage]   投稿日:2017/02/03 23:39:20  ID:CYbB7nGp0.n
>255
変更しやすくする為じゃないの?
一箇所でそれ関連を纏めて変更したいんでしょ。
今は偶々同じ std:vector<int> なだけで。
コメント1件

268
デフォルトの名無しさん (ワッチョイ 1302-1ST5)[sage]   投稿日:2017/02/04 00:17:30  ID:DV7gEIN40.n(2)
m_ulDataCntとか全く意味を持たない変数名が多用されてて辛いわ
コメントも無い
コメント1件

269
デフォルトの名無しさん (ワッチョイ ffc0-Sup+)[sage]   投稿日:2017/02/04 05:48:10  ID:/r5Uxr2+0.n
>264
ソースは俺

270
デフォルトの名無しさん (ワッチョイ 937b-aC2u)[sage]   投稿日:2017/02/04 06:49:15  ID:JWHU8o9P0.n
>267
なんか小難しい
定義されたものをさらに定義して
さらにさらに定義してってのをやってるのも同じなんかな?
見たことない型を追うだけで何ヵ所も追わないといけなくて大変
コメントもないし
コメント1件

271
デフォルトの名無しさん (ワッチョイ d3dc-0e9Z)[sage]   投稿日:2017/02/04 07:32:17  ID:uizo/+L30.n
>268
字面だけで推測するなら m_ulDataCnt は
m_ クラスのメンバ変数である
ul unsigned long
DataCnt データの個数
てな感じに見えるね。

元のソースファイルが一貫した命名規則を使ってれば
それがどんな規則であれ、見てるうちに慣れてくると思うよ。
コメント2件

272
デフォルトの名無しさん (ワッチョイ 7fcc-ysPd)[sage]   投稿日:2017/02/04 07:39:17  ID:6QMeFViK0.n(2)
クソみてぇな命名規則

273
デフォルトの名無しさん (ワッチョイ c35b-0MWP)[sage]   投稿日:2017/02/04 08:42:25  ID:UEIbCXwH0.n(3)
>270
基本的にはそうでしょ。
ある物をdoubleにするかfloatで済ますかという場合、系統毎にtypedefをしてそれを使うしかない。
クラスの継承も同じだと思うけど。

というか読み方間違ってるだろ。まずは縦に読まずに横に読めよ。
そしてそれ以前に上司に聞けよ。
どのみちソースは出せないのだろうから、ここでいくら聞いてもかなり憶測を含んだ回答しか得られない。

コメントが無いのを問題に思うのなら、コメントを付けるのもお前の仕事だろ。
ただ正直言って、m_ulDateCntは>271の言うとおりだろうし、そんなところにコメントがあっても嬉しくない。
多分君とそのソースでコメント作成基準に大幅にずれがある。
それは上司と打ち合わせしないと駄目だ。
最近の傾向としては、「コード読めば分かることをコメントするな!」みたいなのがあるが、
君はまさにその類のコメントを付けようとしている。
ただ逆に、何事であってもコメントを付けて二重化し「間違っていない」事を示す文化の所もある。
いずれにしても合わせるしかないんだから上司に聞け。

274
デフォルトの名無しさん (ワッチョイ a37b-jpzQ)[]   投稿日:2017/02/04 08:49:53  ID:XS0fIkHD0.n(3)
とりあえずシステムハンガリアンは糞

275
デフォルトの名無しさん (ワッチョイ cf24-1aN8)[]   投稿日:2017/02/04 10:35:39  ID:BOsvOfBI0.n
doubleかfloatかに迷いがあるときはtemplateだろjk

276
デフォルトの名無しさん (ワッチョイ cf6b-aC2u)[sage]   投稿日:2017/02/04 20:11:06  ID:tL9rMbFt0.n(2)
>271
こういうの読めるようになりたい
アンダーバーとかなんか特徴あるんかね?
コメント3件

277
片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK67-DkDD)[sage]   投稿日:2017/02/04 20:13:21  ID:sK4bvJ1nK.n
>276
MFCのソース見れば時代遅れのハンガリアンが見れる。

278
デフォルトの名無しさん (ワッチョイ 7fcc-ysPd)[sage]   投稿日:2017/02/04 20:29:05  ID:6QMeFViK0.n(2)
MSのバカ社員が勘違いしてシステムハンガリアンが出来た

279
デフォルトの名無しさん (ワッチョイ c35b-0MWP)[sage]   投稿日:2017/02/04 20:32:51  ID:UEIbCXwH0.n(3)
>276
むしろどこが読めないんだ?
271以外の解釈はないだろ。
コメント1件

280
デフォルトの名無しさん (ワッチョイ 7f3c-ZDta)[sage]   投稿日:2017/02/04 20:36:47  ID:pJMir97a0.n(2)
>276
パターン認識って言うか慣れでしょ
いろんなソース見てりゃだんだんなれてくるよ

281
デフォルトの名無しさん (ワッチョイ cf6b-aC2u)[sage]   投稿日:2017/02/04 20:37:44  ID:tL9rMbFt0.n(2)
ハンガリアンってなんだ
ってレベルで初めて見るわ

>279
それは規則とか法則とか知ってるから読めるんだろ
大まかに言えば経験が違いすぎる
なら読めよって話だけどさ
コメント1件

282
デフォルトの名無しさん (ワッチョイ 1341-qcXh)[]   投稿日:2017/02/04 20:41:51  ID:URlnQv8F0.n
場合によってはハンガリアン記法にすべきものもあるかもしれないけど
全ての変数に対してやるのはどうなんでしょ?
コメント1件

283
デフォルトの名無しさん (ワッチョイ 1302-1ST5)[sage]   投稿日:2017/02/04 21:08:08  ID:DV7gEIN40.n(2)
クラスの先頭にCを付けるのだけは全くの無駄だからやめて

284
デフォルトの名無しさん (ワッチョイ a37b-jpzQ)[]   投稿日:2017/02/04 21:13:17  ID:XS0fIkHD0.n(3)
>282
それでもulとか環境によってサイズが変わる名前付けるのイミフだけどな

285
デフォルトの名無しさん (ワッチョイ c35b-0MWP)[sage]   投稿日:2017/02/04 21:14:27  ID:UEIbCXwH0.n(3)
>281
いや多分、そのソース見たらそんなんばっかだから大体分かると思うぞ。

一応説明しておくと、
m_: method_ の略。(member_かも?)
頭に付けたらインテリセンスでソートされて便利とか言っていた奴もどこかのスレにいたはず。
(メソッドなのかフィールドなのか一目瞭然ということらしい。既に出ているが頭のCもそういう理由)
他でもルール的に「頭に」何か付けるのはよくある話。
MSのVC++のローカル拡張なら __int64 とか、頭に __(二重アンダースコア) がついている。
googleだとprivateは頭に _ だったかな?
(なおgoogleはメソッドは動詞、フィールドは名詞を使えとか言っていたはず)
サフィックスはユーザーが勝手に使い、プリフィックスはシステム側でルールとして使う。

ulはそのまま unsigned long の略。Cなら元の型は数種しかないから想像はつくだろ。
DataCntはDataCountの略。短くする時には母音(aiueo)を抜く。(子音だけでも何となく分かるから)

そんなに経験の差って程の物でもないと思うが。
もっとも俺は無駄に頭に付けたり略したりしないので、このルールなら嫌いだが。
コメント2件

286
デフォルトの名無しさん (ワッチョイ a37b-jpzQ)[]   投稿日:2017/02/04 21:24:54  ID:XS0fIkHD0.n(3)
補足
* グローバルスコープでアンダースコアで始まる
* アンダースコアで始まって大文字が続く
* 二重アンダースコアを含む
に合致する名前は規格で処理系によって予約されてるからコンパイラとそれに付属する標準ライブラリーを実装する人以外は使っちゃダメ

287
デフォルトの名無しさん (ワッチョイ 7f3c-ZDta)[sage]   投稿日:2017/02/04 21:42:33  ID:pJMir97a0.n(2)
>285
> m_: method_ の略。
そんなわけないだろ...

288
デフォルトの名無しさん (ワッチョイ ffc0-Sup+)[sage]   投稿日:2017/02/05 00:12:45  ID:NucUcCyo0.n
グーグルはメンバ変数の最後に_
クソ過ぎわろた
コメント3件

289
デフォルトの名無しさん (ワッチョイ 7fc1-AkR4)[sage]   投稿日:2017/02/05 00:14:15  ID:nBEZPMY50.n(2)
>288
結構あるくね?
インスタンスに付けるてのもよく見る
コメント1件

290
デフォルトの名無しさん (ワッチョイ 3342-fOGj)[sage]   投稿日:2017/02/05 00:41:54  ID:mLcywPgQ0.n(2)
>288
え、なんで?
this->でもいいけど

291
デフォルトの名無しさん (ワッチョイ cf6b-aC2u)[sage]   投稿日:2017/02/05 00:56:14  ID:6qCMRDqV0.n(3)
アンダーバーを変数に付けるのは慣れないと気持ち悪く見えるな
今は慣れたけどなんでついてるかなんて考えたことがない

292
デフォルトの名無しさん (ワッチョイ 7f3c-ZDta)[sage]   投稿日:2017/02/05 00:58:41  ID:PGIZ+KFZ0.n
>289
そこそこある
>288 が井の中なだけ

293
デフォルトの名無しさん (ワッチョイ cf6b-aC2u)[sage]   投稿日:2017/02/05 00:59:09  ID:6qCMRDqV0.n(3)
途中で投稿しちゃった
考えたことないなんて人も居るんじゃないの?と...俺が考えなさすぎてるだけか...

>285
二重アンダーバーもよく見かけるけどなんでわざわざ二重つけてんだよ!!!っていつも思う

母音抜くルールわかりやすかった
変に短いやつ見付けたら母音考えたら良いんだね
コメント2件

294
デフォルトの名無しさん (スップ Sd9f-oUAv)[]   投稿日:2017/02/05 00:59:12  ID:rJZpHJC7d.n(2)
m_xxxでもxxx_でもメンバである保証全くないからthis->派

295
デフォルトの名無しさん (ワッチョイ 7f7b-1ST5)[sage]   投稿日:2017/02/05 01:01:31  ID:WpCJ+nTl0.n(2)
メンバ変数は ぱっと見わかるように、
vector<string> _vstr;
前ハイフンつけてます
コメント1件


296
デフォルトの名無しさん (ワッチョイ 3342-fOGj)[sage]   投稿日:2017/02/05 01:03:44  ID:mLcywPgQ0.n(2)
前ハイフンはシステム予約とバッティングしやすいから後ハイフン派

297
デフォルトの名無しさん (ワッチョイ cf6b-aC2u)[sage]   投稿日:2017/02/05 01:04:30  ID:6qCMRDqV0.n(3)
>295
こんなルールのみだったらわかりやすいのに

298
デフォルトの名無しさん (スップ Sd9f-oUAv)[]   投稿日:2017/02/05 01:07:18  ID:rJZpHJC7d.n(2)
変数はいいけどメンバ関数はどうすんの?
m_とか後ろ_とかつけるの?

299
デフォルトの名無しさん (ワッチョイ c35b-0MWP)[sage]   投稿日:2017/02/05 01:27:23  ID:lu7sp4/h0.n
>293
> 母音抜くルールわかりやすかった
まあここでも使われてるんだけどね。
kwskとか、ggrksとか。

300
デフォルトの名無しさん (ワッチョイ 1302-1ST5)[sage]   投稿日:2017/02/05 01:29:06  ID:Yy4bNkpa0.n
バッティングしやすいと言われて避けてたけどかれこれ一回もしたことないから止めたわ

301
デフォルトの名無しさん (ワッチョイ 7fc1-AkR4)[sage]   投稿日:2017/02/05 01:41:58  ID:nBEZPMY50.n(2)
確率論かよ
プロのやることじゃないだろ
コメント1件

302
デフォルトの名無しさん (ワッチョイ a37b-jpzQ)[]   投稿日:2017/02/05 02:18:19  ID:cECtpBb50.n(2)
避けてきたというのにバッティングしたこと無いから止めるって論理がちょっとおかしい。
お前サーバー管理者だけど今まで何も障害発生してないから要らないわ、解雇ね。
みたいな。

303
デフォルトの名無しさん (ワッチョイ b31e-1yep)[sage]   投稿日:2017/02/05 03:03:49  ID:uDzXyp1X0.n
using std;してるのに変数名にcount使ってるのはたまに見かける
そういう人は
int printf = 0;
とか書いてあっても気にならないんだろうか

304
デフォルトの名無しさん (ワッチョイ 7f7b-1ST5)[sage]   投稿日:2017/02/05 04:04:57  ID:WpCJ+nTl0.n(2)
いずれにしろわかると思うが

305
デフォルトの名無しさん (ワッチョイ a3a6-0MWP)[sage]   投稿日:2017/02/05 08:20:30  ID:sLo1ryYQ0.n
>301
2chにプロが来ると思うのはおかしいでしょ

306
デフォルトの名無しさん (ワッチョイ cf42-qddC)[sage]   投稿日:2017/02/05 21:23:37  ID:QXihksJQ0.n
規格上、メンバ変数の先頭にアンダーバーつけてもシステム変数とバッティングしたりしないよ。
defineとか色々やってるとバッティングするのかもしれんけど、誰か例示してくれ

307
デフォルトの名無しさん (ワッチョイ cf24-1aN8)[]   投稿日:2017/02/05 21:50:38  ID:93yXMd2W0.n(2)
マクロはスコープに従わない
これこそが諸悪の根源
コメント1件

308
デフォルトの名無しさん (ワッチョイ a37b-0yxR)[]   投稿日:2017/02/05 21:53:28  ID:cECtpBb50.n(2)
先頭アンダースコアに大文字が続くとローカルスコープでも×

309
デフォルトの名無しさん (ワッチョイ cf24-1aN8)[]   投稿日:2017/02/05 22:00:58  ID:93yXMd2W0.n(2)
operator "" がアンダースコアで始まらない
std::chronoの識別子までハネるコンパイラを
どう修正すべきか開発陣は詰んでるよね

310
デフォルトの名無しさん (ワッチョイ 13c9-dUno)[sage]   投稿日:2017/02/05 22:11:51  ID:JZIpCKM70.n
cstddef無しでもdecltype(sizeof(int))が使えるぐらいだから別につんでない
コメント1件

311
デフォルトの名無しさん (ワッチョイ cf6b-aC2u)[sage]   投稿日:2017/02/06 01:33:36  ID:EE2HabAa0.n(3)
初歩的な質問なんだけど
列挙体の列挙タグとかないやつってどういうときに使うの?
列挙タグないとどうしようもなくね?ってなってるんだけど
コメント1件

312
デフォルトの名無しさん (ワッチョイ a37b-0yxR)[]   投稿日:2017/02/06 02:14:43  ID:cswrm9tC0.n
>311
単に定数値として使われてるだけだとともう
コメント1件

313
デフォルトの名無しさん (ワッチョイ cf6b-aC2u)[sage]   投稿日:2017/02/06 02:22:16  ID:EE2HabAa0.n(3)
>312
受けとる側を同じ型にしなくていいんかな?
基本的にint型らしいからint型で受けるものなの?

314
デフォルトの名無しさん (ワッチョイ d3dc-0e9Z)[sage]   投稿日:2017/02/06 05:48:15  ID:GvVdGH4O0.n
enum {
 buf_size = 100;
 answer = 42;
};

みたいな感じで使うenumの話だよね。
大雑把に言って「数値リテラルと同じ場面で使える名前のついた整数」。
配列定義の要素数に使えるし、キャストなしに任意の整数型に入れられる。
コメント1件

315
デフォルトの名無しさん (ワッチョイ cf6b-aC2u)[sage]   投稿日:2017/02/06 09:45:50  ID:EE2HabAa0.n(3)
>314
まさにそれだ!!!
要素数か!!!そこ見落としてた

任意のやつに入れられるとしても
本来なら型は合わせるべきでってルールに反しててみたいな葛藤が繰り広げられてる
コメント2件

316
デフォルトの名無しさん (ワッチョイ 7fcf-1ST5)[sage]   投稿日:2017/02/06 10:46:33  ID:eKJHyJFq0.n
>315
Cならintの定数として使えばいいけど、C++ならテンプレートと組み合わせたときとかに型の違いが
出てきちゃうから、整数として使うならconstexpr intにしといたほうがいいよ。葛藤するぐらいならなおのこと。

317
デフォルトの名無しさん (ワッチョイ a319-gmgt)[sage]   投稿日:2017/02/06 16:13:16  ID:1+9LFiOi0.n(2)
f(x,a)をx.f(a)と書くみたいな新しいC++の機能になる予定のがあったと思ったんですけど
この機能が何て言う名前か忘れたので教えてください。

318
デフォルトの名無しさん (ワッチョイ 7f3c-mNa5)[sage]   投稿日:2017/02/06 17:15:37  ID:CRCNRbS80.n
統一関数呼び出しだったかな。
提案されてるだけで取り入れられるかどうかはまだ決まってない気がする。
C言語の既存APIに対応できないとかで揉めてるんじゃないっけ?

319
デフォルトの名無しさん (ワッチョイ a319-gmgt)[sage]   投稿日:2017/02/06 17:49:23  ID:1+9LFiOi0.n(2)
ありがとうございました。
それが使いたいので気になってました。

320
デフォルトの名無しさん (ワッチョイ cf24-1aN8)[]   投稿日:2017/02/06 19:36:58  ID:8E+Xd5G50.n
>310
それoperator ""と関係あるの?

321
デフォルトの名無しさん (ワントンキン MM1f-0yxR)[]   投稿日:2017/02/06 20:41:46  ID:XckUYI7fM.n(2)
operator ""って何?

322
デフォルトの名無しさん (スプッッ Sd9f-PPsr)[]   投稿日:2017/02/06 20:42:45  ID:vzOme6YXd.n
ユーザ定義リテラル
コメント1件

323
デフォルトの名無しさん (エムゾネ FF9f-aC2u)[sage]   投稿日:2017/02/06 20:49:53  ID:wweedNqsF.n
パイプラインでデータ送るってのはexeからexeってイメージで良いのかな?
コメント1件

324
デフォルトの名無しさん (ワントンキン MM1f-0yxR)[]   投稿日:2017/02/06 20:52:29  ID:XckUYI7fM.n(2)
>322
定義するときそんなの使うんだ。全く使わないし使いたいと思ったことがないからマジで知らんかった。

325
デフォルトの名無しさん (ワッチョイ c35b-0MWP)[sage]   投稿日:2017/02/06 21:05:15  ID:R4XPB48C0.n
>315
それ多分defineの代わり。
改善点は>307くらいか?俺はあまり文法には詳しくないから分からんが。

てかお前、マジで上司に聞いた方がいいぞ。
そういうところ改善しろって話じゃないと思うのだが。

326
デフォルトの名無しさん (ドコグロ MMff-C4Pq)[sage]   投稿日:2017/02/06 21:14:58  ID:VJg+IRhiM.n
>323
パイプラインの定義による
普通はプロセス〜プロセスだけど自分で定義した関数に渡せる PowerShell みたいな奴もいるから
コメント2件

327
デフォルトの名無しさん (ワンミングク MM1f-PSyA)[sage]   投稿日:2017/02/07 20:42:19  ID:cTLgA1N6M.n
>293
古アラム語の記法で2000年以上の歴史があるよ

328
デフォルトの名無しさん (ワッチョイ cf24-1aN8)[]   投稿日:2017/02/07 20:54:19  ID:A56tKajQ0.n
>326
pipeline burst SRAMってのがあったな

329
デフォルトの名無しさん (スプッッ Sd9f-aC2u)[sage]   投稿日:2017/02/07 22:51:12  ID:LBkPe/Vnd.n
>326
関数to関数ってdllと何がちがうんや

330
デフォルトの名無しさん (ワッチョイ cf7b-gPBI)[sage]   投稿日:2017/02/08 01:04:48  ID:6rskJv7R0.n
Linuxのコマンドでも、同一プロセス内のコマンドと、別プロセスを起動するコマンドの、2種類ある

10万行のシェルスクリプトの実行時間でも、大きな差がある。
for 9分
while 5秒
awk・perl 0.1秒

331
デフォルトの名無しさん (ワッチョイ 365b-a31+)[sage]   投稿日:2017/02/09 11:43:50  ID:18LIUJ/70.n
STLはどの程度使いこなせるのが一般的と思いますか?

書籍、簡単でいいのがなくて困ってます。
C++難しすぎ。
コメント2件

332
デフォルトの名無しさん (スップ Sd72-Q8BR)[]   投稿日:2017/02/09 11:44:59  ID:ABH38W/Id.n(2)
↓STLというものは存在しない

333
デフォルトの名無しさん (ワッチョイ 9302-ENO3)[sage]   投稿日:2017/02/09 12:39:20  ID:mjUCD5MK0.n(3)
>331
毎日cpprefjp眺めとけばそのうち結構覚えてる

334
デフォルトの名無しさん (ワッチョイ b330-t3CD)[sage]   投稿日:2017/02/09 13:03:54  ID:Wn84KVBK0.n
一般的なんてぼんやりした領域のことを聞かれても困るわ
まC++をC++として使うつもりならコンテナ単体とコンテナとアルゴリズムの組み合わせくらいは
なんとなくでも使えるようになっていて欲しいな

335
デフォルトの名無しさん (ワッチョイ 83dc-w/2a)[sage]   投稿日:2017/02/09 13:09:01  ID:4sYnDBFk0.n
入門書を何冊も試すより『プログラミング言語C++』第4版を手に入れて
先頭からのんびり読み進めながら、後半の標準ライブラリの部分も拾い読み、
という方が費用対効果は大きいかも。1万円近くするお高い本だけど。

336
デフォルトの名無しさん (ワッチョイ 32cc-LNBT)[sage]   投稿日:2017/02/09 13:22:05  ID:erARudvS0.n
バカは一気に覚えようとするから
そんなん受験くらいやろ
実践は身につけんと意味ない

337
デフォルトの名無しさん (アウアウカー Sa1f-a31+)[sage]   投稿日:2017/02/09 13:31:32  ID:DP2Fqfwxa.n
必要になったとき調べながら使ってれば自然と覚える

338
デフォルトの名無しさん (ササクッテロレ Spf7-7zST)[sage]   投稿日:2017/02/09 14:05:14  ID:Ra4XvV1bp.n(2)
STL覚えるのに金払うのは勿体無い気がする
cpprefjpをざっと眺めてどんなものがあるか何となくレベルで把握→実際に使ってみる ってのを繰り返すべし

339
デフォルトの名無しさん (ワッチョイ e2d4-cGUq)[sage]   投稿日:2017/02/09 15:54:11  ID:Ccc/L2ZJ0.n(3)
VC++ なんですが typedef 絡み(スコープ?)で質問です。

typedef int macaddress_t[6];

void show(macaddress_t m) {}

int test() {
  macaddress_t m;
  show(m);
}

なのですが、
error: 'macaddress_t' was not declared in this scope
となってコンパイル通りません。

void show 〜の部分を

extern "C" {
  void show(macaddress_t m) {}
}

って括ると大丈夫になります。
これは何が起きているのでしょうか。

340
デフォルトの名無しさん (ワッチョイ e2d4-cGUq)[sage]   投稿日:2017/02/09 16:42:39  ID:Ccc/L2ZJ0.n(3)
補足
extern "C" なし時にエラーが出るは void show の行です。

C++では引数は別スコープ?

341
デフォルトの名無しさん (ワッチョイ fe6c-lXju)[sage]   投稿日:2017/02/09 17:01:06  ID:ljwNeD6M0.n
それだけだとエラー再現しないから
なんか他でやってるんじゃないの?

342
デフォルトの名無しさん (スップ Sd72-Q8BR)[]   投稿日:2017/02/09 17:13:47  ID:ABH38W/Id.n(2)
test関数が.cにあるとか

343
デフォルトの名無しさん (ワッチョイ e2d4-cGUq)[sage]   投稿日:2017/02/09 21:17:24  ID:Ccc/L2ZJ0.n(3)
あ、.cpp じゃなくて .c  です。
これが大きいんですか?
コメント1件

344
片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK4f-4eBQ)[sage]   投稿日:2017/02/09 21:21:30  ID:2NLO6FImK.n
>343
.cで定義した関数をC++で使うにはextern "C"で宣言しないといけない。
コメント1件

345
デフォルトの名無しさん (アウアウカー Sa1f-a31+)[sage]   投稿日:2017/02/09 21:39:45  ID:H/sFxM1Na.n
>331です。皆さんありがとうございます。

http://www5c.biglobe.ne.jp/~ecb/cpp/cpp00.html
でSTLを勉強中ですが投げ出しそうです。
独習C++は理解できましたが
プログラミング言語 C++は厳しいです。
vector for_each random_shuffle sort
の動作を確認中です。
random_shuffleが毎回同じ値を返すのですが
どうやったら毎回異なる結果を返せますか?
コメント2件

346
デフォルトの名無しさん (ワントンキン MM62-xxX2)[sage]   投稿日:2017/02/09 21:47:39  ID:0i4innvNM.n
>345
3番目の引数に数字入れろ
random_shuffleじゃなくてshuffle使え
HackerRankのSTLのコーナーでやれ
以上

347
デフォルトの名無しさん (ワッチョイ 9302-ENO3)[sage]   投稿日:2017/02/09 23:08:25  ID:mjUCD5MK0.n(3)
>345
random_shuffleは非推奨になったから別のを使え
for_eachは特別な理由が無ければ範囲forを使え

348
デフォルトの名無しさん (ワッチョイ 2731-CIv3)[sage]   投稿日:2017/02/09 23:17:44  ID:Tzm2iYcD0.n(2)
C++11とかC++14とかC++17とかあるけど、C++はまだ開発途上なの?

349
デフォルトの名無しさん (ササクッテロレ Spf7-eUd9)[sage]   投稿日:2017/02/09 23:23:36  ID:lbPmSuZmp.n
はい

350
デフォルトの名無しさん (ササクッテロレ Spf7-7zST)[sage]   投稿日:2017/02/09 23:28:37  ID:Ra4XvV1bp.n(2)
進化なきソフトウエアに未来はないのだ

351
デフォルトの名無しさん (ワッチョイ 9302-ENO3)[sage]   投稿日:2017/02/09 23:50:09  ID:mjUCD5MK0.n(3)
更新が止まるのは需要が無くなったときだ

352
デフォルトの名無しさん (ワッチョイ 2731-CIv3)[sage]   投稿日:2017/02/09 23:55:51  ID:Tzm2iYcD0.n(2)
ちょっと開発工程表出してくれる?
瑕疵期間は完成版リリース後1年ね。
もちろん予算は増やせないよ。

353
デフォルトの名無しさん (ワッチョイ e7a6-cGUq)[sage]   投稿日:2017/02/10 00:02:15  ID:X8zCTp9W0.n
クライアントはよりどりみどりだから

354
デフォルトの名無しさん (ワッチョイ 92c1-7zST)[sage]   投稿日:2017/02/10 00:04:38  ID:DjvLDgGn0.n(2)
唐突に始まる基地外顧客ごっこやめて

355
デフォルトの名無しさん (ワッチョイ b37b-a31+)[sage]   投稿日:2017/02/10 00:06:53  ID:Rg0hWeb00.n(2)
型変換難しすぎます
すぐコンパイラ先生に怒られます

356
デフォルトの名無しさん (ワッチョイ 92c1-7zST)[sage]   投稿日:2017/02/10 00:08:58  ID:DjvLDgGn0.n(2)
すぐ怒ってくれるコンパイラ先生に感謝感激雨あられですね

357
デフォルトの名無しさん (アウアウカー Sa1f-Twc8)[sage]   投稿日:2017/02/10 00:10:01  ID:ynOefsL0a.n
サクラダファミリア

358
デフォルトの名無しさん (ワッチョイ b37b-a31+)[sage]   投稿日:2017/02/10 00:16:30  ID:Rg0hWeb00.n(2)
普通の型からマイクロソフト定義の専用のきついわ
あんなん初めから使うなよマイクロソフトさん

359
デフォルトの名無しさん (ワッチョイ 9302-ENO3)[sage]   投稿日:2017/02/10 00:19:08  ID:Yd/z+i5f0.n
そのうちどれが何をdefineしたものかは大体察しが付いてくる

360
デフォルトの名無しさん (ワッチョイ e2d4-cGUq)[sage]   投稿日:2017/02/10 16:18:59  ID:ovuuNq0I0.n
>344

==ここから==
typedef int macaddress_t[6];

void show(macaddress_t m) {}

int test() {
  macaddress_t m;
  show(m);
}
==ここまで==

ひとつのソースファイルなのですが、
全体を extern "C" で括るらともかく、なんでvoid show〜の行だけ括らないといけないのか、そこが理解できないんです
コメント3件

361
デフォルトの名無しさん (ワッチョイ 7642-CIv3)[sage]   投稿日:2017/02/10 18:37:08  ID:bnzKLGGx0.n
NDKでC++
でwregex使おうとしたら
コンパイルできないし。
wchar_tが4なんだな。
codecvtもないし

まだ早すぎたのか。
コメント2件

362
片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK4f-4eBQ)[sage]   投稿日:2017/02/10 18:43:05  ID:HPN+NYiaK.n
>361
NDKでBoost使えるか試してみてや。
コメント1件


363
デフォルトの名無しさん (ワッチョイ 277b-VpYz)[]   投稿日:2017/02/10 20:32:59  ID:MRcACxyw0.n
>361
wchar_tはWindows以外だいたい4だぞ

364
デフォルトの名無しさん (スッップ Sd52-jZLg)[sage]   投稿日:2017/02/10 20:59:06  ID:kKjy5FQnd.n
>360
試してみたいからどっかにソリューション一式アップしてみ?

365
デフォルトの名無しさん (ワッチョイ 7b0e-zOJM)[sage]   投稿日:2017/02/10 21:53:45  ID:m9Xytejo0.n
2だと合成文字どころかcodepointすら1つでは表現出来ない、半端仕様
それならもういっそutf-8でいいじゃないか

366
デフォルトの名無しさん (ドコグロ MM8a-zlRv)[sage]   投稿日:2017/02/10 22:01:34  ID:YdIN6n2bM.n
>360
釣果はどうだい?

367
デフォルトの名無しさん (ワッチョイ 7b51-cGUq)[sage]   投稿日:2017/02/10 22:09:36  ID:WMmjWeX+0.n
文字を「文字列の先頭」みたいな形でしか表せないのは用途によっては面倒くさい。

368
デフォルトの名無しさん (ワッチョイ 93c9-3u4T)[sage]   投稿日:2017/02/11 00:41:43  ID:yp4PwuMD0.n
そうだな
だから367はもうUnicode使わないようにしないと

369
デフォルトの名無しさん (ワッチョイ 367b-ZOaM)[]   投稿日:2017/02/11 13:11:50  ID:I0QTm/K50.n
>360
ひとつの.cppの中?それならextern "C"は必要ないよ
.cと.cppをリンクするときは.cで定義した関数は.cpp側でextern "C"しなけりゃいけない
キーワード:マングリング

370
360 (ワッチョイ 7642-CIv3)[sage]   投稿日:2017/02/11 18:00:41  ID:mOx2IQFJ0.n
>362
Boostビルドの前に
Android Studioでinclude pathの設定が
わからなくて
お手上げ状態。

371
デフォルトの名無しさん (ワッチョイ 9302-ENO3)[sage]   投稿日:2017/02/11 19:33:50  ID:I2Nt/svY0.n(2)
C++の最大の難関は環境構築

372
デフォルトの名無しさん (アウアウオー Sa8a-S0So)[sage]   投稿日:2017/02/11 20:04:39  ID:2PZ2/Gs1a.n(2)
VCぇ。。。

373
デフォルトの名無しさん (スプッッ Sd72-a31+)[sage]   投稿日:2017/02/11 20:10:03  ID:7410wxb3d.n
vcってなんなんですか

374
デフォルトの名無しさん (アウアウオー Sa8a-S0So)[sage]   投稿日:2017/02/11 20:24:54  ID:2PZ2/Gs1a.n(2)
VisualC++の略。
ダイアログアプリ以外は全然Visualじゃ無いけどね。
でもそんなの他のC++処理系も一緒。
(むしろダイアログアプリすら別に入れないと出来ない。そこがライブラリ選べる自由度の代償)
VB的にC++使えたC++Builderは死んだのだ。。。
他の環境入れる辺り、GUIは関係無いだろうけど、GUI以外にもライブラリがインストール時に全部入るので環境構築は一番楽。

あ、VCでも.netならVB的に使える。
文法が独特になって、C#使った方がマシだが。

375
デフォルトの名無しさん (ワッチョイ 9302-ENO3)[sage]   投稿日:2017/02/11 23:51:53  ID:I2Nt/svY0.n(2)
MSVCとQtって組み合わせられるの?

376
デフォルトの名無しさん (ササクッテロロ Spf7-eUd9)[sage]   投稿日:2017/02/12 03:21:26  ID:9ZkThf7dp.n
組み合わせるの意味がよくわからんけどコンパイラにmsvcは使える

377
デフォルトの名無しさん (ワッチョイ b27b-ENO3)[sage]   投稿日:2017/02/12 15:27:47  ID:YlSn9Fu90.n(2)
vcっていう人とvc++っていう人がいる
コメント1件

378
361 (ワッチョイ 7642-CIv3)[sage]   投稿日:2017/02/12 18:15:47  ID:2aJLYPTP0.n
build.gradleで

cmake {
cppFlags "-std=c++11 -frtti -fexceptions -I${project.buildDir}/../src/main/cpp/include"
}

としたらshared_ptrやらlexical_castは動いたわ。
Boostビルドやインテリセンスが動かない問題は解決できなかったけど

379
デフォルトの名無しさん (アウアウオー Sa8a-S0So)[sage]   投稿日:2017/02/12 18:35:37  ID:ElZAn973a.n
>377
VC6の時代は入門書には大体VCって書いてた。
あの頃がVC全盛期。
コメント1件

380
デフォルトの名無しさん (ワッチョイ b27b-ENO3)[sage]   投稿日:2017/02/12 18:51:10  ID:YlSn9Fu90.n(2)
>379
実はVC6が仕事で使ったのが最後w
MSCもVer.6が良かったなぁみたいな。

381
デフォルトの名無しさん (スプッッ Sd72-a31+)[sage]   投稿日:2017/02/13 08:28:15  ID:w9FuiKwSd.n
fopenと_sの違いを教えてクレメンス
コメント1件

382
デフォルトの名無しさん (アウアウオー Sa8a-S0So)[sage]   投稿日:2017/02/13 10:32:02  ID:dreuS3Zka.n
_sはセキュリティのs
コメント1件

383
デフォルトの名無しさん (スプッッ Sd72-Q8BR)[]   投稿日:2017/02/13 13:50:40  ID:jR+QOQ4bd.n(2)
コンストラクタの関数トライブロックのイニシャライザで発生した例外をキャッチしても
そのままコンストラクタの外へ例外が飛び出るのですがそういうものですか?
コメント1件

384
デフォルトの名無しさん (ワッチョイ b27b-ENO3)[sage]   投稿日:2017/02/13 14:12:07  ID:CDuxjgvH0.n
>381
そんなんがあんのかorz

385
デフォルトの名無しさん (ワッチョイ b330-t3CD)[sage]   投稿日:2017/02/13 14:22:10  ID:83glS84B0.n
>383
そういうもの

386
デフォルトの名無しさん (スプッッ Sd72-Q8BR)[]   投稿日:2017/02/13 14:41:07  ID:jR+QOQ4bd.n(2)
そういうものですか

387
デフォルトの名無しさん (オッペケ Srf7-3u4T)[sage]   投稿日:2017/02/13 22:21:47  ID:0ypMjrgpr.n
メンバーの初期化が失敗してる状態で続行されたら迷惑以外の何物でもない

388
デフォルトの名無しさん (ブーイモ MM52-mpSg)[sage]   投稿日:2017/02/13 22:30:08  ID:2WrcuwMzM.n
catchブロックは必ずthrowで終わらないといけなくて、省略すると自動でrethrowするみたいね

389
デフォルトの名無しさん (ワッチョイ b37b-a31+)[sage]   投稿日:2017/02/13 22:32:22  ID:riwEWnOT0.n
COM登録難しい
自動で作られる_p.cとか_i.cファイルってなんなんだ
IIDやCLSIDとか難しすぎる

390
デフォルトの名無しさん (ワッチョイ 129b-ilKL)[sage]   投稿日:2017/02/14 00:03:42  ID:IGsQOpXK0.n
>382
secure

391
デフォルトの名無しさん (スップ Sd72-a31+)[sage]   投稿日:2017/02/14 09:38:53  ID:dFgeiJZpd.n(2)
idlをビルドしたときに作られる _p.c _i.c .h はコンパイラによって中身に差は出てくるけど
内容までは気にしなくて良いもの??

392
デフォルトの名無しさん (スップ Sd72-RX11)[]   投稿日:2017/02/14 11:14:58  ID:T4QzsHFxd.n(5)
void hoge
{
static string a;
}

void hage
{
thread_local string b;
}

int main()
{
hoge();
hage();
}
とした場合aとbのデストラクタが呼ばれる順番の規定はどうなってますか
コメント2件

393
デフォルトの名無しさん (スップ Sd72-a31+)[sage]   投稿日:2017/02/14 12:12:14  ID:dFgeiJZpd.n(2)
>392
cプラスはデストラクタは定義しないとないんじゃなかったっけ
プログラム終了時は呼ばれるのだろうか

394
デフォルトの名無しさん (ワッチョイ b330-t3CD)[sage]   投稿日:2017/02/14 12:20:58  ID:mNVQx7P30.n
シングルスレッドなら構築の逆順

395
デフォルトの名無しさん (ワントンキン MM62-xxX2)[sage]   投稿日:2017/02/14 12:24:34  ID:cBGBFD/aM.n
マルチスレッドでも同じだで

396
デフォルトの名無しさん (スップ Sd72-RX11)[]   投稿日:2017/02/14 12:26:56  ID:T4QzsHFxd.n(5)
gcc6.2でやってますが順番を変えてもaのデストラクタが先に呼ばれます

397
デフォルトの名無しさん (JP 0H4b-EsWW)[sage]   投稿日:2017/02/14 13:00:32  ID:he6YB8dMH.n
そいつら main と関係ないとこで呼ばれてるべ
しかし記述順にかかわらず b が先じゃないとまずいんじゃないの

398
デフォルトの名無しさん (スップ Sd72-RX11)[]   投稿日:2017/02/14 13:15:37  ID:T4QzsHFxd.n(5)
ちゃんとmainのそれぞれの関数内で順番通りコンストラクタは呼ばれてます
デストラクタは逆順にならないです

399
デフォルトの名無しさん (ワッチョイ 93c9-3u4T)[sage]   投稿日:2017/02/14 13:39:07  ID:aNlWux3V0.n(3)
>392
3.6.3 Termination 段落1
『The completions
of the destructors for all initialized objects with thread storage duration within that thread are sequenced
before the initiation of the destructors of any object with static storage duration.』

400
デフォルトの名無しさん (スップ Sd72-RX11)[]   投稿日:2017/02/14 14:23:27  ID:T4QzsHFxd.n(5)
そのスレッド内のスレッド記憶期間を有する全ての初期化されたオブジェクトに対するデストラクタの完了は、静的記憶期間を有するオブジェクトのデストラクタの開始前に順序付けられる。


thread localはstaticの前に順序付けられる?

401
デフォルトの名無しさん (ワッチョイ 93c9-3u4T)[sage]   投稿日:2017/02/14 14:33:18  ID:aNlWux3V0.n(3)
thread_localのデストラクターの完了はstaticのデストラクター開始前となる
つまりthread_localのデストラクターが先

402
デフォルトの名無しさん (ワッチョイ df7b-3cRu)[sage]   投稿日:2017/02/14 14:43:39  ID:DbhRLpyW0.n
英語読めねーザコにはC++は早い

403
デフォルトの名無しさん (スップ Sd72-RX11)[]   投稿日:2017/02/14 14:54:00  ID:T4QzsHFxd.n(5)
でもthread localのデストラクタが後に呼ばれているようです

404
デフォルトの名無しさん (ワッチョイ 367b-F1sY)[sage]   投稿日:2017/02/14 17:04:24  ID:NG72BBfs0.n
clangだとどう?
Wandbox等でも試せる
コメント1件

405
デフォルトの名無しさん (スプッッ Sdc7-a31+)[sage]   投稿日:2017/02/14 18:47:20  ID:KObDNYqgd.n(2)
テストについて考えてるんだけど難しい
ソフトウェア開発難しくないか
一番ダメなのは俺が方向性を定めぬまま決めてしまっていることだろうが

406
デフォルトの名無しさん (ワッチョイ df98-3CwI)[sage]   投稿日:2017/02/14 20:35:30  ID:lntB2yLX0.n
仕事でやってるなら
(まさか会社で物事を決める立場にある人がこんな質問しているとは思えないので)
先輩に聞くか、会社の方針に合わせるしかないよ
今までどのようにやってきているかを見て、同じようにやるしかない

趣味でやっていて、オープンソースか何か、チームの一員として参加しているのなら
やはりチームの方針に合わせるしかないよ
今までどのようにやってきているかを見て、同じようにやるしかない

趣味でやっていて、個人で何か作っているっていうんなら、テストはする必要ないよ
個人開発はいつでも時間が圧倒的に足りてないから、テストなんか真面目にやってたら
いつまでたってもソフトが完成しない
一般的にメインのコードよりもテストコードのほうが量が多い
1万行のコードに対して10万行のテストコード・・・とかなったらもうソフトが完成しない
いろいろいう人もいるだろうけど、ここは現実問題を見たほうが良い
・・・お金取るなら別だけど
コメント1件

407
デフォルトの名無しさん (ワッチョイ 93c9-3u4T)[sage]   投稿日:2017/02/14 20:38:17  ID:aNlWux3V0.n(3)
ふむふむ、つまり長文=低能

408
デフォルトの名無しさん (ワッチョイ e292-CIv3)[]   投稿日:2017/02/14 20:47:51  ID:kM+db1DC0.n
>404
VC2017だと必ずthread_localが先にデストラクトされます
gcc5.4.0だとコンストラクタと逆順になります
clang3.8.1だとコンパイルできません

409
デフォルトの名無しさん (スプッッ Sdc7-a31+)[sage]   投稿日:2017/02/14 21:15:15  ID:KObDNYqgd.n(2)
>406
まさに大当たりなんだな
ソフトウェア開発こんな難しいとは思ってなかった
何が難しいって意見が違うところが多くて困る

結合テストどうすりゃええんやってマジ困ってるわ
単体やシステムはなんとなくわかるんだが

410
デフォルトの名無しさん (オッペケ Srf7-3u4T)[sage]   投稿日:2017/02/14 21:26:41  ID:5RYrxuibr.n
VC2017って来月9日に出るやつか

411
デフォルトの名無しさん (JP 0Hf7-7zST)[sage]   投稿日:2017/02/14 21:43:47  ID:w8MjV4wUH.n
大前提として、100%不具合が存在しないことを保証することは現実的には不可能
その前提の上で、如何に効率良く目的に合った不具合を検出して修正できるかがテストの肝

何か拠り所が欲しいならJSTQBの用語集でも読んでみたら良いんじゃね
コメント1件

412
デフォルトの名無しさん (ワッチョイ e7a6-cGUq)[sage]   投稿日:2017/02/14 22:01:03  ID:fgjpd/Zj0.n
バグを見つけるためのテスト

413
デフォルトの名無しさん (JP 0H4b-EsWW)[sage]   投稿日:2017/02/15 00:15:28  ID:urFAvqLFH.n
バグを追い出すためのテスト

隠れ家を重点的に叩く

414
デフォルトの名無しさん (ドコグロ MMa3-VkM2)[sage]   投稿日:2017/02/15 06:47:06  ID:zgJtAmDRM.n
追い出されたバグは違うモジュールに...
デスマーチあるある

415
デフォルトの名無しさん (スプッッ Sd72-a31+)[sage]   投稿日:2017/02/15 07:31:50  ID:PfwOrtkrd.n(5)
>411
以下に効率よくってのポイントっぽいね
結合テストシステムテストの差がいつも怪しい
コメント1件

416
デフォルトの名無しさん (ワッチョイ d236-a31+)[sage]   投稿日:2017/02/15 07:41:57  ID:XaX5xvK80.n
>415
システムテストはシステムレベルの仕様に基づいてテストすればいいんじゃないかな。その際、中身がどのようにモジュールに分割されてるかは意識しない。
結合テストでは、システムレベルの仕様では見えないモジュール同士のインターフェースを中心に行う。
コメント1件

417
デフォルトの名無しさん (スプッッ Sd72-a31+)[sage]   投稿日:2017/02/15 07:48:01  ID:PfwOrtkrd.n(5)
>416
dllを差し換える作業を今してるんだけどその結合テストとなると
diiを呼び出す口を呼び出したときにどうなるか
それだけ見ればよいってことで良いかな?

418
デフォルトの名無しさん (スプッッ Sd72-a31+)[sage]   投稿日:2017/02/15 10:29:03  ID:PfwOrtkrd.n(5)
strcpy_sってなんかMSDNの記載と挙動違うくない?
第三引数ぬるのときにエラーになる
コメント1件

419
デフォルトの名無しさん (ワッチョイ 9b22-lHUq)[sage]   投稿日:2017/02/15 11:05:06  ID:t9yAVOgj0.n
strSourceがNULLだとEINVALを返すって書いてあるけど
コメント1件

420
デフォルトの名無しさん (スプッッ Sd72-a31+)[sage]   投稿日:2017/02/15 11:10:10  ID:PfwOrtkrd.n(5)
>419
リリースビルド実行してもそんなことなく落ちてしまう

421
デフォルトの名無しさん (ワッチョイ df7b-3cRu)[sage]   投稿日:2017/02/15 11:53:58  ID:LTs78uDW0.n(6)
If strDestination or strSource is a null pointer, or if the destination string is too small,
the invalid parameter handler is invoked, as described in Parameter Validation.
コメント1件

422
デフォルトの名無しさん (スプッッ Sd72-a31+)[sage]   投稿日:2017/02/15 12:06:28  ID:PfwOrtkrd.n(5)
>421
それ読んでるけど表ではコピー先には0で返り値でエラーコードが返ってくると記載がある
その文章の後半の実行の継続が〜って箇所がこれなんだと読んだんだが
コメント1件

423
デフォルトの名無しさん (ワッチョイ df7b-3cRu)[sage]   投稿日:2017/02/15 12:14:45  ID:LTs78uDW0.n(6)
パラメータバリデーションも読めばわかる
その中で実行継続が選択された場合はエラーコードが返る
コメント1件

424
デフォルトの名無しさん (ワッチョイ 0fd2-3yR0)[sage]   投稿日:2017/02/15 12:16:06  ID:tDlcUFQu0.n(2)
>422
記載内容を確認したいのでURL張って
コメント1件

425
デフォルトの名無しさん (ワッチョイ df7b-3cRu)[sage]   投稿日:2017/02/15 12:18:53  ID:LTs78uDW0.n(6)
ググればトップに出てくるページも探せない奴は参加しなくて良い

426
デフォルトの名無しさん (スップ Sd72-a31+)[sage]   投稿日:2017/02/15 12:25:15  ID:7fF4cQx4d.n(4)
>423
実行継続ってどうやってするんだ...
リリースビルドのやつだとそのまま落ちちゃうけどもそれとは違うの?

427
デフォルトの名無しさん (ワッチョイ df7b-3cRu)[sage]   投稿日:2017/02/15 12:29:16  ID:LTs78uDW0.n(6)
Invalid Parameter Handler Routineを差し替える

428
デフォルトの名無しさん (スップ Sd72-a31+)[sage]   投稿日:2017/02/15 12:34:47  ID:7fF4cQx4d.n(4)
なんか手のつけたことのないやつに深入りしそうだ
ぐぐりちゅう
これ普通にだと落ちるのが正常ってことなんかね...?

>424
https://msdn.microsoft.com/ja-jp/library/td1esda9.aspx

429
デフォルトの名無しさん (ワッチョイ df7b-3cRu)[sage]   投稿日:2017/02/15 12:35:51  ID:LTs78uDW0.n(6)
レジストリ弄ってワトソン出さない方法もあるらしいけどやった事ない
コメント1件

430
デフォルトの名無しさん (スップ Sd72-a31+)[sage]   投稿日:2017/02/15 12:45:49  ID:7fF4cQx4d.n(4)
>429
これって初期設定だと実行継続みたいなのをぽちっとしないといけない
それがデフォルトってことなんね
なんか思っていた動作と異なる
くそやろう...
コメント1件

431
デフォルトの名無しさん (スップ Sd72-a31+)[sage]   投稿日:2017/02/15 14:54:33  ID:7fF4cQx4d.n(4)
で....できない
http://srz-zumix.blogspot.jp/2012/08/strcpys.html?m=1
これ参考にしてるんだけどそのままコピペだとできない
助けてクレメンス
コメント1件

432
デフォルトの名無しさん (ワッチョイ df7b-Ry7I)[sage]   投稿日:2017/02/15 15:37:40  ID:LTs78uDW0.n(6)
#include <string.h>
#include <errno.h>
void handler(
const wchar_t * expression,
const wchar_t * function,
const wchar_t * file,
unsigned int line,
uintptr_t pReserved)
{
}

int main()
{
char a[20];
_set_invalid_parameter_handler(handler);
strcpy_s(a, 20, NULL);
printf("%d\n", EINVAL == errno);
}

433
デフォルトの名無しさん (オッペケ Srf7-3u4T)[sage]   投稿日:2017/02/15 18:51:08  ID:rJwzLFnhr.n
>418
スレ違いは去れよ

434
デフォルトの名無しさん (ワッチョイ 0fd2-3yR0)[sage]   投稿日:2017/02/15 20:32:24  ID:tDlcUFQu0.n(2)
>431
何が起きてるのかわからないから助けようがない
ブレークポイント張って動作は追った?

435
デフォルトの名無しさん (ワッチョイ fb5f-YBZc)[sage]   投稿日:2017/02/17 16:55:38  ID:oBsnwbhT0.n
>430
_s関数の設計思想がプログラマが想定してない状況で動作を継続しないだもの
NULLが来るのが想定内だってんならデバッグ用の_set_invalid_parameter_handler()なんか使わず最初からstrcpy_s()を呼ぶな

436
デフォルトの名無しさん (ワッチョイ 5f17-P9CU)[]   投稿日:2017/02/18 02:10:37  ID:BjwZuIbZ0.n
Electronic Artsの標準ライブラリEASTL
https://github.com/electronicarts/EASTL

3.05.02 release
ようやくunordered_set, unordered_map が追加された。

437
デフォルトの名無しさん (オッペケ Sr9f-xmLK)[sage]   投稿日:2017/02/18 09:00:37  ID:GNecI7Ewr.n(2)
『Electronic Artsの標準ライブラリEASTL』
俺ライブラリのくせに「標準」付けるところが馬鹿っぽい
標準って日本語の意味も理解しない低能

438
デフォルトの名無しさん (ワッチョイ 0f7b-LjcY)[sage]   投稿日:2017/02/18 09:10:35  ID:IbdRLC160.n
「標準ライブラリ実装」なら満足?

439
デフォルトの名無しさん (オッペケ Sr9f-xmLK)[sage]   投稿日:2017/02/18 11:10:10  ID:GNecI7Ewr.n(2)
Electronic Artsによる標準ライブラリの一部分の実装 EASTL

440
デフォルトの名無しさん (ワッチョイ 5fcc-UoBp)[sage]   投稿日:2017/02/18 14:17:54  ID:cCamoDUt0.n
STLのSはStandardだからな
英語出来ない馬鹿なのか

441
デフォルトの名無しさん (アウアウカー Sa9f-LRhM)[sage]   投稿日:2017/02/18 17:51:18  ID:DE0SU//Ra.n
Sugoi Tsuyoi Library

442
デフォルトの名無しさん (ワッチョイ 5b02-Z7AI)[sage]   投稿日:2017/02/18 18:20:17  ID:oLH7rESg0.n
サブセットのなにがいけないのか

443
デフォルトの名無しさん (ワッチョイ fba6-eq+O)[sage]   投稿日:2017/02/18 19:49:22  ID:fWF8oK3d0.n
処理系を作っているなら「STL実装」を名乗ってもいいの?

444
デフォルトの名無しさん (ワッチョイ 0f7b-qzUy)[]   投稿日:2017/02/18 20:29:26  ID:bU7vWvgF0.n
「Electronic Artsの標準」って言ってるだけで何の問題もないと思うが?
Standardという言葉を必要以上に狭く解釈するほうがバカみたい

445
デフォルトの名無しさん (ワッチョイ 0f5b-6x/Q)[sage]   投稿日:2017/02/19 09:55:36  ID:2DCCXMeS0.n(3)
strstreamでwstringを使う方法はありますか?

446
デフォルトの名無しさん (ワッチョイ 8bc9-xmLK)[sage]   投稿日:2017/02/19 09:59:54  ID:sJkQ60Iy0.n(2)
はい。有ります

447
デフォルトの名無しさん (ワッチョイ 8bc9-xmLK)[sage]   投稿日:2017/02/19 10:17:39  ID:sJkQ60Iy0.n(2)
ちなみにこんな感じだろうたぶん
https://ideone.com/JpKEZ7

448
デフォルトの名無しさん (ワッチョイ 0f5b-6x/Q)[sage]   投稿日:2017/02/19 11:16:43  ID:2DCCXMeS0.n(3)
それは(w)stringstreamではないですか?
strstreamのヘッダもいらない気がします。

strstreamでwstringを利用したいのですが
独習C++のサンプルでもchar配列しか扱って
ません。

449
デフォルトの名無しさん (ワッチョイ 0f7b-LjcY)[sage]   投稿日:2017/02/19 11:50:16  ID:kiv7S6GK0.n
strstreamってdeprecatedでは
コメント1件

450
デフォルトの名無しさん (ワッチョイ 0f5b-6x/Q)[sage]   投稿日:2017/02/19 12:02:45  ID:2DCCXMeS0.n(3)
>449
visual studioのヘルプ見たらそんな気がしました。
おとなしくwstringstream使っとくべきですかね。

451
デフォルトの名無しさん (ワッチョイ 6bdc-89sP)[sage]   投稿日:2017/02/19 21:37:05  ID:XrGtgUCH0.n(3)
Singletonでのthread終了時にjoinで固まる
http://suzukit14.hateblo.jp/entry/2015/06/24/111000

これとまったく同じ問題に突き当たりました。
最後に書かれているように、detach()で確かに無事終了できますが、
なんかマズかったりしますか?
コメント2件

452
デフォルトの名無しさん (オッペケ Sr9f-xmLK)[sage]   投稿日:2017/02/19 22:04:43  ID:s/Z6tyYFr.n
良く読んでないけと
破棄されたm_endを参照してなんかうれしいの?

453
デフォルトの名無しさん (ワッチョイ eb9a-XQTV)[]   投稿日:2017/02/19 22:07:24  ID:qRKd/jmw0.n(2)
スレッドの終了を待たずにプロセスが終了しても問題ないならOK

454
デフォルトの名無しさん (ワッチョイ fb7b-Mjmn)[]   投稿日:2017/02/19 22:15:23  ID:Av0JmT9x0.n(2)
>451
そのインスタンスのメンバーを使用するコードがdetachしたスレッド内にある場合はデストラクタが呼ばれた後にそのメンバーを参照して未定義動作になる可能性がある
コメント1件

455
451 (ワッチョイ 6bdc-89sP)[sage]   投稿日:2017/02/19 22:22:05  ID:XrGtgUCH0.n(3)
皆さん、ご回答、ありがとうございます。

>454
まさにそれと思しきクラッシュが終了時にランダムで発生することに気付きました(汗)
detach()もjoin()もせずに終わろうとしたときに百発百中で出るのと同じ「R6010 -abort() has been called」というエラーです。

Sleep()でも呼んで十分に待てば、実用上は問題ないんでしょうけど、
こういう曖昧なコードは嫌いなので、なんとかキレイにスパッと終わりたいです・・・。

Singletonが適したクラスではあるのですが、
この問題をうまく裁けないようであれば、諦めて通常のクラスにすることを検討します。
コメント1件

456
デフォルトの名無しさん (ワッチョイ fb7b-Mjmn)[]   投稿日:2017/02/19 22:32:17  ID:Av0JmT9x0.n(2)
>455
コンパイラは?MSVC2015使っててそんな問題に当たったことないんだけど
どうしても回避できないなら(MSVC2012には無かったかもしれないけど)std::quick_exit使う事も検討してみたら?
コメント1件

457
デフォルトの名無しさん (ワッチョイ eb9a-XQTV)[]   投稿日:2017/02/19 22:45:35  ID:qRKd/jmw0.n(2)
俺なら、pthread なり直接使って
クリーンアップハンドラ登録する

458
451 (ワッチョイ 6bdc-89sP)[sage]   投稿日:2017/02/19 23:08:15  ID:XrGtgUCH0.n(3)
>456
Visual Studio Express 2013 for Windows Desktop Update5 です。

http://stackoverflow.com/questions/10915233/stdthreadjoin-hangs-if-cal...

ここを見てると、どうも2015では直ってそうですね。

quick_exitのこと教えてくださってありがとうございます。
知りませんでした。
でも、VS2015に移行するのが一番キレイに解決するので、そうします。

これまで、特にVS2015に移行する理由がなかったので2013のままでしたが、
おかげさまで理由ができました。
ありがとうございました。

459
451 (ワッチョイ 6bdc-89sP)[sage]   投稿日:2017/02/20 01:50:05  ID:1uwDjjWZ0.n(2)
ところで、>451のサイトのコードですが、
m_end変数の型がstd::atomic<bool>となっています。
わざわざatomicクラスを使わなくても、

m_end = true;

は通常のboolでもアトミック操作だからかまわないですよね?
何か意図があるのでしょうか?

460
デフォルトの名無しさん (ワッチョイ dfc0-fRM8)[sage]   投稿日:2017/02/20 02:43:42  ID:kFvPCPcM0.n
コンパイラが省略するかもしれないから

461
デフォルトの名無しさん (ワッチョイ 5f17-P9CU)[sage]   投稿日:2017/02/20 03:08:55  ID:n+W7/EeT0.n
volatile ではダメなん?
コメント1件

462
デフォルトの名無しさん (ワッチョイ fb7b-Mjmn)[]   投稿日:2017/02/20 04:17:03  ID:8FjaGYLq0.n
>461
わざわざ保証されてないものを使用したあなら好きにしたらいいんじゃない?
タイミングが重要なものに使用したらすぐ破綻するけど。

463
デフォルトの名無しさん (ワッチョイ cbdc-92cl)[sage]   投稿日:2017/02/20 06:33:50  ID:8HBU9+MH0.n
大きな整数だと読み書き操作のアトミック性が保証されないから
std::atomic を使わなきゃならん。
必要ないかも知れないけど、同じ書き方でboolでもlong longでも
正しく動くようにテンプレートを使った標準的な書式にしておく、
ってのがC++流と言えるのかな。

あと、std::atomic<bool>と書いてもboolを直に代入しても
実行時には同じ速度で動く(ようにatomicを実装する)から損はない、
というのもね。
コメント1件

464
451 (ワッチョイ 6bdc-89sP)[sage]   投稿日:2017/02/20 19:43:56  ID:1uwDjjWZ0.n(2)
ご回答、ありがとうございます。

>463
>大きな整数だと読み書き操作のアトミック性が保証されない
そうだったんですか!
それはatomicが要りますね。

>実行時には同じ速度で動く(ようにatomicを実装する)から損はない
オーバーヘッドがないのは素晴らしいですね。

気を付けます。
ありがとうございました。

465
デフォルトの名無しさん (ワッチョイ 0f2b-eq+O)[sage]   投稿日:2017/02/21 07:47:04  ID:t35fjyuz0.n
>459
>何か意図があるのでしょうか?

サイト書いた人間死んでるの?
それとも生きてるの?

生きてるならなんでわざわざ赤の他人に他人の意図を聞くんだろうこの人
本人に直接聞けば一番早いんじゃないの
そいつの意図なんてのは書かない限りそいつしか知らないし分からないじゃん

466
デフォルトの名無しさん (ドコグロ MM7f-My/j)[sage]   投稿日:2017/02/21 08:17:30  ID:y0kzTLQNM.n
終わった話になに頓珍漢な言いがかりつけてるんだよ w

467
デフォルトの名無しさん (ササクッテロラ Sp9f-Aztl)[sage]   投稿日:2017/02/21 09:41:12  ID:yRuALuONp.n
お受験の季節だし、国語の時間が辛かったんだと思います
許してあげてください
更新情報
・スレッド一覧ページで過去ログのタイトル検索・一覧表示ができるようになりました(2016/1/20)
NGワード登録
登録する
スレッド内検索

プログラム板 タイトル検索

このスレッドが人気です(実況系)
実況 ◆ フジテレビ 82628 出家 (1000)フジ実況
実況 ◆ 日本テレビ 54261 カルト対893 (999)NTV実況
羽鳥慎一モーニングショー★2 (524)テレ朝実況
実況 ◆ テレビ朝日 46858 (902)テレ朝実況
実況 ◆ フジテレビ 82629 (152)フジ実況
連続テレビ小説 べっぴんさん★180 (939)NHK実況
白熱ライブ ビビット★1 (204)TBS実況
はやドキ!& あさチャン!月曜日★2 (379)TBS実況
このスレッドが人気です(ニュース系)
かばんから狆っ恥ずかしい瓠崑膺佑里もちゃ」 警察の所持品検査は「プライバシー侵害」と驚きの賠償命令…現場は震撼 (559)ニュー速+
【芸能】「出家します」清水富美加が電撃引退!『幸福の科学』活動専念へ★21 (1000)音楽・芸能ニュース
【政治】“田舎臭い少女風” 稲田防衛相のファッションに悪評[週刊新潮] (394)ニュー速+
【デッドライジング】 もしゾンビが大量発生したらどこに逃げるのが正解? (41)ニュー速
【芸能】「出家します」清水富美加が電撃引退!『幸福の科学』活動専念へ★22 (110)音楽・芸能ニュース
【社会】岐阜・金津園のソープランド摘発、岐阜県警 売春防止法違反の疑い (67)ニュー速+
【芸能】「出家します」清水富美加が電撃引退!『幸福の科学』活動専念へ★20 (1000)音楽・芸能ニュース
【静岡】イスラム教徒の保護者、「ハラール対応」ではない学校給食に苦慮 ムスリムへの理解と柔軟な対応求める★29 (1000)ニュー速+
プログラム板の人気スレ
次世代言語議論スレ【Go Rust Haskell Scala Erlang Elixir】 第二世代 (115)
【統計分析】機械学習・データマイニング12 (707)
ねねっちと一緒にプログラムを勉強するスレ (330)
スレ立てるまでもない質問はここで 145匹目 (617)
Excel VBA 質問スレ Part45 (681)
ふらっと C#,C♯,C#(初心者用) Part126 (566)
C言語なら俺に聞け 138 (767)
次世代言語議論スレ【Go Rust Haskell Scala Erlang Elixir】 (1000)
C++相談室 part129 (381)
くだすれPython(超初心者用) その32 (94)
Androidプログラミング質問スレ revision52 (860)
Visual Studio 2015 Part8 (224)
Xamarin Part3 (387)
【PHP】下らねぇ質問はここに書き込みやがれ 7 (835)
推薦図書/必読書のためのスレッド 81 (84)
クラス名・変数名に迷ったら書き込むスレ。Part27 (863)
Swift part9 (824)
☆★Java質問・相談スレッド179★★ (694)
Java入門・初心者質問スレ Part.2 (460)
関数型プログラミング言語Haskell Part30 (130)
c、Java、pythonを難易度でランク付けして (63)
+ JavaScript の質問用スレッド vol.122 + (661)
【初心者歓迎】C/C++室 Ver.100【環境依存OK】 (420)
Pythonのお勉強 Part52 (151)
このサイトについて
このサイトは2ちゃんねるからデータを取得し、表示するサービスです。
画像のインライン表示機能について
画像のURLの後ろにある[画像をインライン表示]をクリックすると、URLの下に表示します。
表示される画像は横幅100pxに縮小されていて、クリックすると原寸で表示します。
このサイトの特徴
1)スレッド内検索ができます
2)レス(「>>1」など)のポップアップができます
3)不適切な言葉を含む投稿を表示しません
4)ページ内で画像を直接表示できます
5)2ch他スレッドへのリンクはタイトル・板名つきでリンクします
6)すっきりとしたデザインで表示します
7)最新スレや前スレをチェック・一覧表示します
8)NGワード機能の搭載でイヤな言葉が目に入りません
9)荒らしを自動チェックします
10)スレッド内・同一IDの書き込みだけ表示できます
11)レスの返事をレスされた発言の下に表示する「まとめビュー」が利用できます
12)シリーズ化したスレッドの一覧を表示します
13)最新のスレッドがある場合はお知らせします
削除について
こちらをご覧ください
機能要望について
現在機能要望受付中です。
問い合わせについて
こちらのページからどうぞ
Amazon


このサイトは2ch.scからデータを取得・表示しています。削除などについてはこちらをご覧ください。 アクセスモード:差分取得 - 正常取得 - 8件 - 取得完了