前スレ
C++相談室 part156
https://mevius.5ch.net/test/read.cgi/tech/1621389313/
C++相談室 part157
■ このスレッドは過去ログ倉庫に格納されています
2021/08/09(月) 10:57:31.60ID:JaaB5Egp
302デフォルトの名無しさん
2021/09/08(水) 23:11:18.07ID:cWvdMGeM 入ってなくない?
303デフォルトの名無しさん
2021/09/09(木) 02:02:27.18ID:aICFtjZy304デフォルトの名無しさん
2021/09/09(木) 02:39:56.24ID:AtdpUvef コテとトリ付けながらIDは消すとかいうガイジムーブ
他スレでの荒らしがバレたら困りますって宣言してるようなもんだな笑
他スレでの荒らしがバレたら困りますって宣言してるようなもんだな笑
305デフォルトの名無しさん
2021/09/09(木) 03:11:54.20ID:GRtgENVW306デフォルトの名無しさん
2021/09/09(木) 03:58:39.82ID:k9fYYQrZ >>305
何を言いたいのか分からない無言URL貼りは時間の無駄なのでやめて欲しいです。少なくとも該当していません。
何を言いたいのか分からない無言URL貼りは時間の無駄なのでやめて欲しいです。少なくとも該当していません。
307デフォルトの名無しさん
2021/09/09(木) 04:10:55.91ID:k9fYYQrZ 一応書いておくと、>>298のコードは見れば分かるとおりiをvolatile宣言して最適化の対象から外せば当然動きます。
これはlongjmpに限った話ではありません。
先のURLの個別のコードにはありませんが、一般論としての記述はありました。このサイトが元にしてるサイト(リンクのURLは違いましたが)ではvolatileも例に含まれているようです。
https://wiki.sei.cmu.edu/confluence/display/c/MSC22-C.+Use+the+setjmp%28%29%2C+longjmp%28%29+facility+securely
これはlongjmpに限った話ではありません。
先のURLの個別のコードにはありませんが、一般論としての記述はありました。このサイトが元にしてるサイト(リンクのURLは違いましたが)ではvolatileも例に含まれているようです。
https://wiki.sei.cmu.edu/confluence/display/c/MSC22-C.+Use+the+setjmp%28%29%2C+longjmp%28%29+facility+securely
308デフォルトの名無しさん
2021/09/09(木) 04:18:38.68ID:k9fYYQrZ すみません。見落としてただけみたいですね。日本語の方でも個別のコードありましたね。寝ぼけてたかも。
309デフォルトの名無しさん
2021/09/09(木) 08:55:47.93ID:+RnvyubR >>295
嘘記事かどうかくらいは書いておくべきだと思うがね
だいぶ前に初めて見たとき俺も半信半疑だったし(D&Eをまだ読んでなかった頃だが
てかオブジェクト指向のとこをテンプレート(メタプログラミング)に置き換えるとすごいしっくり来るんだよなアレ
嘘記事かどうかくらいは書いておくべきだと思うがね
だいぶ前に初めて見たとき俺も半信半疑だったし(D&Eをまだ読んでなかった頃だが
てかオブジェクト指向のとこをテンプレート(メタプログラミング)に置き換えるとすごいしっくり来るんだよなアレ
310デフォルトの名無しさん
2021/09/09(木) 12:39:56.43ID:emntwqXC311デフォルトの名無しさん
2021/09/09(木) 12:56:38.90ID:emntwqXC312デフォルトの名無しさん
2021/09/09(木) 18:44:12.96ID:9obv3E3K ワクチン拒否とかしてそう
313デフォルトの名無しさん
2021/09/09(木) 18:45:48.31ID:I6ZDQIJr ダニングクルーガー効果のなんちゃってマスター状態でも容易に書けちゃうのが問題。
そのクソコードの状態でも一応動くところがC++の恐ろしいところでもあり幅広いフリーフォーマットの適応力でもある。
そのクソコードの状態でも一応動くところがC++の恐ろしいところでもあり幅広いフリーフォーマットの適応力でもある。
314デフォルトの名無しさん
2021/09/09(木) 19:54:26.64ID:VcdPV4nP jokeもhumorも馬鹿には理解できない
315デフォルトの名無しさん
2021/09/09(木) 20:23:36.23ID:M2q//47O316デフォルトの名無しさん
2021/09/09(木) 20:26:09.91ID:5B6QjFP1 お前らってホント人にケチつけるときだけイキイキとしてんな
317デフォルトの名無しさん
2021/09/09(木) 20:41:37.86ID:Ja2+yviO シャリーア・ポリスとかスシ・ポリスとかみたいな人
318デフォルトの名無しさん
2021/09/11(土) 11:18:20.93ID:ke/Tkn8S オブジェクト指向も構造化も原理主義者がウザいだけで
ナンチャッテでいいからやってると問題がきれいに整理できるので
やめようとは全然思わない
テンプレートだってそうだ
ナンチャッテでいいからやってると問題がきれいに整理できるので
やめようとは全然思わない
テンプレートだってそうだ
319デフォルトの名無しさん
2021/09/11(土) 11:23:49.14ID:rfW8qH4V320デフォルトの名無しさん
2021/09/11(土) 12:26:09.65ID:3OqmYb77 C++には酸っぱい葡萄もある
321デフォルトの名無しさん
2021/09/11(土) 12:37:06.92ID:FXACoymx テンプレートってただの超絶便利機能だろ
オブジェクト指向笑とは比べ物にならない
オブジェクト指向笑とは比べ物にならない
322デフォルトの名無しさん
2021/09/11(土) 12:45:07.36ID:d+bn5JZd >>318
歴史は繰り返す、ってことだろ
一時期C++コミュニティがJavaに悪影響受けたりしてたことからJavaを嫌悪してたやつが
何でもSTLの真似してりゃ自動的に価値のあるコードになると盲信してたからな
笑うしかない
歴史は繰り返す、ってことだろ
一時期C++コミュニティがJavaに悪影響受けたりしてたことからJavaを嫌悪してたやつが
何でもSTLの真似してりゃ自動的に価値のあるコードになると盲信してたからな
笑うしかない
323デフォルトの名無しさん
2021/09/11(土) 12:49:01.51ID:ke/Tkn8S 俺ら技術屋の辛いとこだよ
新しいものはとりあえず食ってみるしかない
あげくゲロマズで非常に気分が悪くなることもあるが怖がってらんない
新しいものはとりあえず食ってみるしかない
あげくゲロマズで非常に気分が悪くなることもあるが怖がってらんない
324デフォルトの名無しさん
2021/09/11(土) 12:59:15.55ID:d+bn5JZd 技術屋というか、実用してる人は盲信はしないと思う
原理主義に走るのは、自分の頭で考えない(権威に頼る)からだ
自分の頭で考えて使ってれば、自ずと長所も短所もわかるもんだ
原理主義に走るのは、自分の頭で考えない(権威に頼る)からだ
自分の頭で考えて使ってれば、自ずと長所も短所もわかるもんだ
326デフォルトの名無しさん
2021/09/11(土) 15:50:05.22ID:pU9Ou8D7 分かったら二度とデマ流すなよ
ワクチンにマイクロチップだのどこそこの銀行が潰れるだの朝鮮人が井戸に毒入れただのもだぞ
本人は軽いジョークのつもりでも、デマとして流行したら人が死ぬんだからな
ワクチンにマイクロチップだのどこそこの銀行が潰れるだの朝鮮人が井戸に毒入れただのもだぞ
本人は軽いジョークのつもりでも、デマとして流行したら人が死ぬんだからな
327デフォルトの名無しさん
2021/09/11(土) 18:07:47.03ID:ke/Tkn8S > 原理主義に走るのは、自分の頭で考えない(権威に頼る)からだ
ほんこれ
ほんこれ
328デフォルトの名無しさん
2021/09/11(土) 21:27:01.30ID:3OqmYb77 そうはいってもC言語規格にfinally機構があったら便利なはず
PGが規格追加に後ろ向きになってしまうのはコンパイラの対応が信頼できるレベルになるまで時間がかかる不快な経験を積んできたから
PGが規格追加に後ろ向きになってしまうのはコンパイラの対応が信頼できるレベルになるまで時間がかかる不快な経験を積んできたから
329デフォルトの名無しさん
2021/09/11(土) 21:45:47.80ID:mopEDxb+ デストラクタもないC言語にfinallyだけあってもねぇ…
330デフォルトの名無しさん
2021/09/11(土) 21:55:48.31ID:x2ZLDQix じゃあC#使えで……
331デフォルトの名無しさん
2021/09/11(土) 21:59:46.39ID:3OqmYb77 >>329
デストラクタがないからこそfinallyで資源解放処理を呼び出す需要があるともいえるんだけど
デストラクタがないからこそfinallyで資源解放処理を呼び出す需要があるともいえるんだけど
332デフォルトの名無しさん
2021/09/11(土) 22:14:53.27ID:rQxvOqzv >>331
実際に書いてみたらわかると思うけどどこからfinallyに来るのかわからないから解放処理書くのはけっこう大変だぞ
実際に書いてみたらわかると思うけどどこからfinallyに来るのかわからないから解放処理書くのはけっこう大変だぞ
333デフォルトの名無しさん
2021/09/11(土) 22:44:38.83ID:3OqmYb77 どこから来るかわからないのはgotoも同じ
334デフォルトの名無しさん
2021/09/11(土) 22:51:49.85ID:6kN4WIJa だからたいして楽にはならんよって話ね
335デフォルトの名無しさん
2021/09/11(土) 22:54:02.48ID:zCvRZpSn 例外がいらんわ
必要としてるやつはC使うなよ
必要としてるやつはC使うなよ
336デフォルトの名無しさん
2021/09/11(土) 23:18:46.75ID:EO9owr6G 関数毎に atexit かな
337デフォルトの名無しさん
2021/09/12(日) 01:57:56.96ID:z8yQu9Mw Goのdefer文でいいんじゃないか
338デフォルトの名無しさん
2021/09/12(日) 11:03:53.61ID:JRO5EM3e ハノンフルボッコされて火病を起こしててワロス
自分が悪いのに逆ギレするほどみっともないことはないなあw
自分が悪いのに逆ギレするほどみっともないことはないなあw
339デフォルトの名無しさん
2021/09/12(日) 11:40:02.90ID:AN8tG6su 整形後に関数が10行以上になったらコンパイルエラーにしよう
関数名1行+開きカッコ1行+return1行+閉じカッコ1行だから実質5行までな
関数名1行+開きカッコ1行+return1行+閉じカッコ1行だから実質5行までな
340デフォルトの名無しさん
2021/09/12(日) 12:24:15.40ID:SBMPlzna たまにちびっこだらけのピアノ教室に一人だけ下手くそなおじさんが混ざってて臆面もなく発表会とかにも出てくるけど、それがその固定ハンドル
341デフォルトの名無しさん
2021/09/12(日) 17:30:32.90ID:d/9I2lQ9 質問でsが
std::this_thread名前空間内の関数は、std::thread以外の手段で作ったスレッドで
実行しても大丈夫なんでしょうか、
一部のC標準ライブラリ関数みたいにスレッド起動手段次第でリークしたりすることは無い?
https://cpplover.blogspot.com/2010/10/msvc.html
std::this_thread名前空間内の関数は、std::thread以外の手段で作ったスレッドで
実行しても大丈夫なんでしょうか、
一部のC標準ライブラリ関数みたいにスレッド起動手段次第でリークしたりすることは無い?
https://cpplover.blogspot.com/2010/10/msvc.html
342デフォルトの名無しさん
2021/09/12(日) 18:10:18.89ID:TJh0S1vO >>341
やってみないと分からないから自己責任でご自由にどうぞ、というのが正しい回答
やってみないと分からないから自己責任でご自由にどうぞ、というのが正しい回答
343デフォルトの名無しさん
2021/09/12(日) 18:54:34.09ID:d/9I2lQ9344デフォルトの名無しさん
2021/09/12(日) 18:58:14.10ID:d/9I2lQ9 未定義動作とか処理系依存とかではなく、規定されていないということ?
345デフォルトの名無しさん
2021/09/12(日) 20:27:37.58ID:x/1IPUIX 大丈夫なんじゃないすかね
mainはstd::thread以外の手段で呼び出されるんだし
mainはstd::thread以外の手段で呼び出されるんだし
346デフォルトの名無しさん
2021/09/12(日) 21:31:25.44ID:ewAYKYUU どうやってアクセスするん
347ハノン ◆QZaw55cn4c
2021/09/13(月) 01:29:14.15 >>326
米国民主党の宣伝=ロイター・ブルームバーグ=真実
米国共和党、なかんずくプレジデント・トランプの言ったこと=フェイクニュース
という理解でいいでしょうか?イヴェルメクチンの話 https://www.youtube.com/watch?v=zhIg_KNfyhQ
>>338
どこがフルボッコか詳しく、ジョークのわからない馬鹿一人だけが騒いでいた、という印象ですが
>>340
バッハコンクール大人の部には出てみたいですね‥‥たぶんよくできる中高生のなかに一人ヨボヨボが混ざるの図になりそうですけれどもね
米国民主党の宣伝=ロイター・ブルームバーグ=真実
米国共和党、なかんずくプレジデント・トランプの言ったこと=フェイクニュース
という理解でいいでしょうか?イヴェルメクチンの話 https://www.youtube.com/watch?v=zhIg_KNfyhQ
>>338
どこがフルボッコか詳しく、ジョークのわからない馬鹿一人だけが騒いでいた、という印象ですが
>>340
バッハコンクール大人の部には出てみたいですね‥‥たぶんよくできる中高生のなかに一人ヨボヨボが混ざるの図になりそうですけれどもね
348デフォルトの名無しさん
2021/09/13(月) 02:16:31.80ID:ZygXXNwA349デフォルトの名無しさん
2021/09/13(月) 03:47:26.34ID:PttYpQoG わかるよ
C++とはつまりCから2キー(2半音)上げたDという意味
ピアノならCはドでDはレ
C++とはつまりCから2キー(2半音)上げたDという意味
ピアノならCはドでDはレ
350デフォルトの名無しさん
2021/09/13(月) 04:01:44.26ID:PttYpQoG このスレにMIDIエンジンを自分で作ったことある人、どのくらいいる?
351デフォルトの名無しさん
2021/09/13(月) 06:59:19.04ID:ZygXXNwA ピアノじゃなくても「CはドでDはレ」だと思うが……
352デフォルトの名無しさん
2021/09/13(月) 07:04:19.91ID:B8QV0Pmm MDLを入力してWAVを出力するコンパイラみたいのなら
353デフォルトの名無しさん
2021/09/13(月) 07:13:59.03ID:PttYpQoG >>351
思うだけならあなたの自由だから好きにしなさい
思うだけならあなたの自由だから好きにしなさい
354デフォルトの名無しさん
2021/09/13(月) 07:15:10.48ID:OJvNe7+i >>351
世の中には移調楽器って言うものがあって、例えば普通によく見かけるトランペットはドの音はB♭だったりする
世の中には移調楽器って言うものがあって、例えば普通によく見かけるトランペットはドの音はB♭だったりする
355デフォルトの名無しさん
2021/09/13(月) 07:16:20.40ID:PttYpQoG Windowsの標準システムドライブがCであることの経緯を知らないでPGやってる人、どのくらいいる?
356デフォルトの名無しさん
2021/09/13(月) 07:50:09.00ID:B8QV0Pmm UNIXから一歩も離れたくない人とか?
357デフォルトの名無しさん
2021/09/13(月) 07:56:33.80ID:9W3p606T aとbドライブがフロッピー
358デフォルトの名無しさん
2021/09/13(月) 07:59:56.78ID:B8QV0Pmm かつて日本ではAがHDDだった
359デフォルトの名無しさん
2021/09/13(月) 09:28:48.75ID:Kz73eSbE360デフォルトの名無しさん
2021/09/13(月) 12:01:25.13ID:DUyA86Uv MIDIなんてPC-98以前のFM音源搭載機でしかいじらなかった
MIDIドライバとかならともかくMIDIエンジンが何なのかよく分からない
MIDIドライバとかならともかくMIDIエンジンが何なのかよく分からない
361ハノン ◆QZaw55cn4c
2021/09/13(月) 13:47:19.19 >>348
スレチガイも大概だからここで終わりましょうか
バッハコンクール https://www.bach-concours.org/p/about.html
趣旨「J.Sバッハの作品はクラシック音楽の真髄、導入期からポリフォニー音楽や舞曲に親しみ、ピアノの学習の中に取り入れて、そしてレパートリーにしていただきたい」、おっしゃるとおり誰でも参加可能です
https://matsuri.5ch.net/test/read.cgi/piano/1488364000/
バッハはこんな曲を作った人:https://www.youtube.com/watch?v=SBWGgwzcjYc
確かアニメ監督の押井守は若い頃バッハの合唱団にいたと聞いています
スレチガイも大概だからここで終わりましょうか
バッハコンクール https://www.bach-concours.org/p/about.html
趣旨「J.Sバッハの作品はクラシック音楽の真髄、導入期からポリフォニー音楽や舞曲に親しみ、ピアノの学習の中に取り入れて、そしてレパートリーにしていただきたい」、おっしゃるとおり誰でも参加可能です
https://matsuri.5ch.net/test/read.cgi/piano/1488364000/
バッハはこんな曲を作った人:https://www.youtube.com/watch?v=SBWGgwzcjYc
確かアニメ監督の押井守は若い頃バッハの合唱団にいたと聞いています
362デフォルトの名無しさん
2021/09/13(月) 19:44:06.04ID:O/wDGHc8 >>361
スレ違いはお前一人なんだが・・・
スレ違いはお前一人なんだが・・・
363デフォルトの名無しさん
2021/09/15(水) 11:32:22.49ID:0GWRKP/3 関数のポインタを引数で受け取る関数に
予め定義した関数のポインタの代わりに
lambda関数のポインタを渡したいとき
どう書けばよいですか?
予め定義した関数のポインタの代わりに
lambda関数のポインタを渡したいとき
どう書けばよいですか?
364デフォルトの名無しさん
2021/09/15(水) 11:43:21.99ID:KsZNjWDc >>363
ラムダ式を呼び出すラッパー関数を作って、その関数ポインタを渡す
ラムダ式を呼び出すラッパー関数を作って、その関数ポインタを渡す
365デフォルトの名無しさん
2021/09/15(水) 11:57:59.21ID:tjq2eHQi std::functionでええやろか?
366デフォルトの名無しさん
2021/09/15(水) 12:01:19.03ID:+suq2kti >>363
こういうこと?
void func1(void (*arg)())
{
arg();
}
template <std::invocable F>
void func2(F arg)
{
arg();
}
int main()
{
func1([]{});
func2([]{});
}
こういうこと?
void func1(void (*arg)())
{
arg();
}
template <std::invocable F>
void func2(F arg)
{
arg();
}
int main()
{
func1([]{});
func2([]{});
}
367デフォルトの名無しさん
2021/09/15(水) 12:57:52.48ID:gM7DTPzC368はちみつ餃子 ◆8X2XSCHEME
2021/09/15(水) 13:01:11.97ID:/JHaU2Oz >>363
クロージャ (ラムダ式によって作られた関数オブジェクト) は周囲の変数をキャプチャしないときに限り関数ポインタに変換可能。
https://timsong-cpp.github.io/cppwp/n3337/expr#prim.lambda-6
逆に言えばそうでないときは関数ポインタと互換性はない。
受け取る側が関数ポインタとして受け取るという前提を動かせないのであれば
渡すラムダ式のほうをキャプチャしない形にしてくださいということになるし、
汎用的にラムダ式を受け取れるようにしたいのだということであれば >>365-366 という方法をとることになる。
クロージャ (ラムダ式によって作られた関数オブジェクト) は周囲の変数をキャプチャしないときに限り関数ポインタに変換可能。
https://timsong-cpp.github.io/cppwp/n3337/expr#prim.lambda-6
逆に言えばそうでないときは関数ポインタと互換性はない。
受け取る側が関数ポインタとして受け取るという前提を動かせないのであれば
渡すラムダ式のほうをキャプチャしない形にしてくださいということになるし、
汎用的にラムダ式を受け取れるようにしたいのだということであれば >>365-366 という方法をとることになる。
369デフォルトの名無しさん
2021/09/15(水) 13:05:03.04ID:0GWRKP/3 >>366
template<typename F> void func2(F arg) { arg(); }
int main() { func2([]{}); }
↑
これだと動いています
void func1(void (*arg)()) { arg(); }
int main() { func1([]{}); }
↑
やりたいのはこっちだったんですがこれはコンパイルエラーになりますた
# invocable は C++20 からみたいですね 目的にあってるかどうか判りませんが試す環境が今無いので後回しです
template<typename F> void func2(F arg) { arg(); }
int main() { func2([]{}); }
↑
これだと動いています
void func1(void (*arg)()) { arg(); }
int main() { func1([]{}); }
↑
やりたいのはこっちだったんですがこれはコンパイルエラーになりますた
# invocable は C++20 からみたいですね 目的にあってるかどうか判りませんが試す環境が今無いので後回しです
370デフォルトの名無しさん
2021/09/15(水) 13:05:45.58ID:0GWRKP/3371デフォルトの名無しさん
2021/09/15(水) 13:22:34.75ID:+suq2kti そういうオチか
372デフォルトの名無しさん
2021/09/15(水) 16:27:00.87ID:46YA8/2z >>369
ヒント: コンセプト
ヒント: コンセプト
373デフォルトの名無しさん
2021/09/16(木) 21:11:24.40ID:wgmfJty/ 単項+が意味を持つ例のやつか
374デフォルトの名無しさん
2021/09/17(金) 16:40:49.64ID:J/w/zJeW 仕事が生きがい?会社員の分際で?そろそろ認めなさい…あなたたちは単なる駒です
⇒赤羽の父ひろゆきが教える仕事の本質とやりたいことの違いが凄過ぎて感動が止まらない…
https://www.youtube.com/watch?v=zkwQOdq17dI
【ひろゆき/切り抜き】サラリーマンって資本主義の奴隷なの?
https://www.youtube.com/watch?v=Vi-dvyd5ksE&t=74s
【ひろゆき】社会人語っちゃうサラリーマンについて語りました
https://www.youtube.com/watch?v=pX7NHj_rIBg
奴隷は身近にある?日本の奴隷について【ひろゆき 切り抜き】
https://www.youtube.com/watch?v=evQjCUWIHV4
【ひろゆき】会社員なんて楽しくない?⇒楽しいしラクな仕事の仕方とは※サラリーマン必見!
https://www.youtube.com/watch?v=T95-FS8sT3w&t=390s
【ひろゆき】日本のサラリーマン制度...終わってますよwww
https://www.youtube.com/watch?v=Y-30zk2zDn0
【ひろゆき】視聴者の質問そっちのけで虚言癖アピールするひろゆき
https://www.youtube.com/watch?v=cMjk9B4J2n4
【ひろゆき/切り抜き】虚言癖ってどうやって直せばいい?
https://www.youtube.com/watch?v=5cS7vyb0tfE
⇒赤羽の父ひろゆきが教える仕事の本質とやりたいことの違いが凄過ぎて感動が止まらない…
https://www.youtube.com/watch?v=zkwQOdq17dI
【ひろゆき/切り抜き】サラリーマンって資本主義の奴隷なの?
https://www.youtube.com/watch?v=Vi-dvyd5ksE&t=74s
【ひろゆき】社会人語っちゃうサラリーマンについて語りました
https://www.youtube.com/watch?v=pX7NHj_rIBg
奴隷は身近にある?日本の奴隷について【ひろゆき 切り抜き】
https://www.youtube.com/watch?v=evQjCUWIHV4
【ひろゆき】会社員なんて楽しくない?⇒楽しいしラクな仕事の仕方とは※サラリーマン必見!
https://www.youtube.com/watch?v=T95-FS8sT3w&t=390s
【ひろゆき】日本のサラリーマン制度...終わってますよwww
https://www.youtube.com/watch?v=Y-30zk2zDn0
【ひろゆき】視聴者の質問そっちのけで虚言癖アピールするひろゆき
https://www.youtube.com/watch?v=cMjk9B4J2n4
【ひろゆき/切り抜き】虚言癖ってどうやって直せばいい?
https://www.youtube.com/watch?v=5cS7vyb0tfE
375デフォルトの名無しさん
2021/09/18(土) 12:55:20.00ID:fzYJNrfO 聞いてくれウィンドーズ10で
GetLocalTime(&st1);
const system_clock::time_point now = system_clock::now();
GetLocalTime&(st2);
とした後に、nowから
const time_t tt = system_clock::to_time_t(tp);
auto msec = duration_cast<milliseconds>(tp.time_since_epoch()).count() % 1000;
としてnowのms単位のUNIX Timeを算出したらば、
st1 ≦ now
は当然成立しているが、
now ≦ st2
は成立しないことがあり、何か
now ≦ st2 + 1
なんじゃわ;;;
何で?!
GetLocalTime(&st1);
const system_clock::time_point now = system_clock::now();
GetLocalTime&(st2);
とした後に、nowから
const time_t tt = system_clock::to_time_t(tp);
auto msec = duration_cast<milliseconds>(tp.time_since_epoch()).count() % 1000;
としてnowのms単位のUNIX Timeを算出したらば、
st1 ≦ now
は当然成立しているが、
now ≦ st2
は成立しないことがあり、何か
now ≦ st2 + 1
なんじゃわ;;;
何で?!
376デフォルトの名無しさん
2021/09/18(土) 12:57:50.95ID:fzYJNrfO 処理系はMSVC2019でつ、
duration_cast<T>はTで指定した時間単位未満は切り捨てとC++の規格で決まっているはず……
duration_cast<T>はTで指定した時間単位未満は切り捨てとC++の規格で決まっているはず……
377デフォルトの名無しさん
2021/09/18(土) 13:05:15.92ID:fzYJNrfO ちなみにst1 < st2 でありかつ (now ≦ st2) が非成立、というケースも発生するあるから
おかしいのは明らかにstd::chronoの方、
おかしいのは明らかにstd::chronoの方、
378デフォルトの名無しさん
2021/09/18(土) 13:23:54.83ID:I+biH5jK379デフォルトの名無しさん
2021/09/18(土) 13:43:19.07ID:fzYJNrfO >>378
>>377のは時刻のキャッシングみたいなことをしており呼び出した瞬間の時刻を返していないとしたらそれはGetLocalTime()の方ではない、という証左
つなみにマルチコアと最適化(いやしくもAPIの呼び出しがあるのであり得ないが)とプリエンプションの合わせ技で
実行順序が変になり得るかも、みたいな被害車妄想で
GetLocalTime(&st1);
const system_clock::time_point now = system_clock::now();
_ReadWriteBarrier();
GetLocalTime&(st2);
としてみたが>>377な現象は変わらんかったは、
>>377のは時刻のキャッシングみたいなことをしており呼び出した瞬間の時刻を返していないとしたらそれはGetLocalTime()の方ではない、という証左
つなみにマルチコアと最適化(いやしくもAPIの呼び出しがあるのであり得ないが)とプリエンプションの合わせ技で
実行順序が変になり得るかも、みたいな被害車妄想で
GetLocalTime(&st1);
const system_clock::time_point now = system_clock::now();
_ReadWriteBarrier();
GetLocalTime&(st2);
としてみたが>>377な現象は変わらんかったは、
380デフォルトの名無しさん
2021/09/18(土) 13:48:57.22ID:vjp4M7Ow windowsのAPI同士で比較しろ
一般に違うAPIを使ってるなら一貫した結果にならなくてもおかしくない
一般に違うAPIを使ってるなら一貫した結果にならなくてもおかしくない
381デフォルトの名無しさん
2021/09/18(土) 13:53:59.82ID:I+biH5jK ちゃんと知りたいならsystem_clock::nowが内部でどのAPIを呼んでいるのか調べてみては
382デフォルトの名無しさん
2021/09/18(土) 13:58:54.14ID:EqZgRVmV 変数tpはなにものですか
383デフォルトの名無しさん
2021/09/18(土) 14:01:55.85ID:EqZgRVmV というか% 1000っておかしくね???
384デフォルトの名無しさん
2021/09/19(日) 00:12:35.69ID:EWVuImUN >>375
お前の頭がおかしいんだよ
お前の頭がおかしいんだよ
385デフォルトの名無しさん
2021/09/19(日) 00:47:53.30ID:hcp/HEe5 不等号≦への理解、間違ってないか
386デフォルトの名無しさん
2021/09/19(日) 07:30:37.33ID:CNUd2o2A unsignedとintを比較してるとかどうせそういうオチだろ
387デフォルトの名無しさん
2021/09/19(日) 13:12:19.06ID:/yxUr6Cy 中途半端なコードだけチラ見せされてもな
再現する完全なコードを出せとしか
再現する完全なコードを出せとしか
388デフォルトの名無しさん
2021/09/19(日) 15:50:35.11ID:neurUQ4a >>386
天才なのでそんなヘマはしますしません、
>>387
再現コード貼る、
https://ideone.com/GeMebI
※ 冒頭コメントの通り、非Windows環境では現象再現しないコードなのので注意
ウィンドーズでの実行結果:
i=---: st1, chrono, st2: ORDER CHECK
i= 0: 1632034143228, 1632034143228, 1632034143228: OK.
i= 1: 1632034143229, 1632034143229, 1632034143229: OK.
i= 2: 1632034143229, 1632034143229, 1632034143229: OK.
i= 3: 1632034143229, 1632034143230, 1632034143229: NG!
i= 4: 1632034143229, 1632034143230, 1632034143229: NG!
i= 5: 1632034143230, 1632034143230, 1632034143230: OK.
i= 6: 1632034143230, 1632034143230, 1632034143230: OK.
i= 7: 1632034143230, 1632034143231, 1632034143230: NG!
i= 8: 1632034143230, 1632034143231, 1632034143230: NG!
i= 9: 1632034143230, 1632034143231, 1632034143230: NG!
==> ORDER CHECK 「NG!」のところでchrono > st2 になっており、chronoのtime_pointがSYSTEMTIMEを1 msだけ追い越している
天才なのでそんなヘマはしますしません、
>>387
再現コード貼る、
https://ideone.com/GeMebI
※ 冒頭コメントの通り、非Windows環境では現象再現しないコードなのので注意
ウィンドーズでの実行結果:
i=---: st1, chrono, st2: ORDER CHECK
i= 0: 1632034143228, 1632034143228, 1632034143228: OK.
i= 1: 1632034143229, 1632034143229, 1632034143229: OK.
i= 2: 1632034143229, 1632034143229, 1632034143229: OK.
i= 3: 1632034143229, 1632034143230, 1632034143229: NG!
i= 4: 1632034143229, 1632034143230, 1632034143229: NG!
i= 5: 1632034143230, 1632034143230, 1632034143230: OK.
i= 6: 1632034143230, 1632034143230, 1632034143230: OK.
i= 7: 1632034143230, 1632034143231, 1632034143230: NG!
i= 8: 1632034143230, 1632034143231, 1632034143230: NG!
i= 9: 1632034143230, 1632034143231, 1632034143230: NG!
==> ORDER CHECK 「NG!」のところでchrono > st2 になっており、chronoのtime_pointがSYSTEMTIMEを1 msだけ追い越している
389デフォルトの名無しさん
2021/09/19(日) 15:57:36.84ID:neurUQ4a こっそり訂正するが、>>377で
>st1 < st2 でありかつ (now ≦ st2) が非成立、というケースも発生するあるから
と言ったがな、ありゃ誤報だスマンカッタ、
あとちなみに、>>375を書いた時点では、現象再現はFILETIMEを使わずに、以下の方法で、
SYSTEMTIMEと ( (time_point - epochタイム) を tm構造体に変換したもの、の
それぞれからから直接シリアル日時を出して比較すた、
year * (12 * 31 * 24 * 60 * 60 * 1000)
+ month * (31 * 24 * 60 * 60 * 1000) // 一ヵ月の日数を31固定で換算しているが、大小比較目的なのでこれで問題無い。
+ day * (24 * 60 * 60 * 1000)
+ hour * (60 * 60 * 1000)
+ minute * (60 * 1000)
+ second * (1000)
+ millisecond
>st1 < st2 でありかつ (now ≦ st2) が非成立、というケースも発生するあるから
と言ったがな、ありゃ誤報だスマンカッタ、
あとちなみに、>>375を書いた時点では、現象再現はFILETIMEを使わずに、以下の方法で、
SYSTEMTIMEと ( (time_point - epochタイム) を tm構造体に変換したもの、の
それぞれからから直接シリアル日時を出して比較すた、
year * (12 * 31 * 24 * 60 * 60 * 1000)
+ month * (31 * 24 * 60 * 60 * 1000) // 一ヵ月の日数を31固定で換算しているが、大小比較目的なのでこれで問題無い。
+ day * (24 * 60 * 60 * 1000)
+ hour * (60 * 60 * 1000)
+ minute * (60 * 1000)
+ second * (1000)
+ millisecond
390デフォルトの名無しさん
2021/09/19(日) 16:10:18.78ID:HwX1dH8g まともに読んでないがバリアの使い方がおかしくて実行順序入れ替わってるとかじゃね??
391デフォルトの名無しさん
2021/09/19(日) 16:33:01.30ID:neurUQ4a >>390
(1) _ReadWriteBarrier()は最強のバリアーやぞ;;;
(2) GetLocalTime()がどんな副作用を持つ関数かコンパイラが知るはずは無いのだから
最適化でコードの入れ替えや変数のレジスタ割り当てしっぱなしということはあり得ない
(3) ていうかそれ以前に、GetLocalTime()やstd::chronoの呼び出し元がシングルスレッドなのだから
それで順序がおかしくなるとかCPUがおかしいか、スレッドをプリエンプトして再びディスパッチする際に
別のコアに実行させようとする際にOSがヘマしているかのどちらかという話に……
ちなみに漏れは正常動作しており、本人が言うのだから間違いない
(1) _ReadWriteBarrier()は最強のバリアーやぞ;;;
(2) GetLocalTime()がどんな副作用を持つ関数かコンパイラが知るはずは無いのだから
最適化でコードの入れ替えや変数のレジスタ割り当てしっぱなしということはあり得ない
(3) ていうかそれ以前に、GetLocalTime()やstd::chronoの呼び出し元がシングルスレッドなのだから
それで順序がおかしくなるとかCPUがおかしいか、スレッドをプリエンプトして再びディスパッチする際に
別のコアに実行させようとする際にOSがヘマしているかのどちらかという話に……
ちなみに漏れは正常動作しており、本人が言うのだから間違いない
392デフォルトの名無しさん
2021/09/19(日) 16:39:43.92ID:k8GedCcQ393はちみつ餃子 ◆8X2XSCHEME
2021/09/19(日) 17:02:40.43ID:nkVr2ypq >>375
GetLocalTime の分解能は 10ms くらいっぽいぞ。
system_clock::now がもっと精度の高い API を使っていたら
そんくらいの前後はあってもおかしくないんじゃね。
GetLocalTime の分解能は 10ms くらいっぽいぞ。
system_clock::now がもっと精度の高い API を使っていたら
そんくらいの前後はあってもおかしくないんじゃね。
394デフォルトの名無しさん
2021/09/19(日) 17:17:42.61ID:k8GedCcQ https://ideone.com/qA5yOL
system_clockの部分を生のFILETIMEで置き換えてみた
実行結果はこんな感じ
i= 0: 132765453416200000, 132765129416213861, 132765453416200000: NG!
i= 1: 132765453416210000, 132765129416218094, 132765453416210000: NG!
i= 2: 132765453416210000, 132765129416218837, 132765453416210000: NG!
i= 3: 132765453416210000, 132765129416219530, 132765453416210000: NG!
GetLocalTimeやめたら?
system_clockの部分を生のFILETIMEで置き換えてみた
実行結果はこんな感じ
i= 0: 132765453416200000, 132765129416213861, 132765453416200000: NG!
i= 1: 132765453416210000, 132765129416218094, 132765453416210000: NG!
i= 2: 132765453416210000, 132765129416218837, 132765453416210000: NG!
i= 3: 132765453416210000, 132765129416219530, 132765453416210000: NG!
GetLocalTimeやめたら?
395デフォルトの名無しさん
2021/09/19(日) 17:28:49.56ID:UeoKc9fZ 時刻取得用のAPIをパフォーマンス計測用に使っちゃったんだね
WIN32では大昔からQueryPerformanceFrequencyとQueryPerformanceCounterを使うよ
https://docs.microsoft.com/en-us/windows/win32/api/profileapi/
WIN32では大昔からQueryPerformanceFrequencyとQueryPerformanceCounterを使うよ
https://docs.microsoft.com/en-us/windows/win32/api/profileapi/
396デフォルトの名無しさん
2021/09/19(日) 17:59:29.70ID:UeoKc9fZ 時刻取得でそのまま精度を上げるAPIとしては
GetSystemTimePreciseAsFileTime
https://docs.microsoft.com/ja-jp/windows/win32/api/sysinfoapi/nf-sysinfoapi-getsystemtimepreciseasfiletime
ただしWindows 8以降。それ以前だと以下を使うしかないっぽいね。
GetSystemTimeAsFileTime
std::system_time::nowの実装としては、_Xtime_get_ticksを使用している(2021年9月21日17:57JST現在)
https://github.com/microsoft/STL/blob/main/stl/inc/chrono#L663-L665
これが使用しているAPIについて聞いたStackoverflowの質問
https://stackoverflow.com/questions/54933940/what-clock-does-the-visual-studio-2017-crt-implementation-of-stdchronosystem
上記によると最初に書いたAPIである模様
GetSystemTimePreciseAsFileTime
https://docs.microsoft.com/ja-jp/windows/win32/api/sysinfoapi/nf-sysinfoapi-getsystemtimepreciseasfiletime
ただしWindows 8以降。それ以前だと以下を使うしかないっぽいね。
GetSystemTimeAsFileTime
std::system_time::nowの実装としては、_Xtime_get_ticksを使用している(2021年9月21日17:57JST現在)
https://github.com/microsoft/STL/blob/main/stl/inc/chrono#L663-L665
これが使用しているAPIについて聞いたStackoverflowの質問
https://stackoverflow.com/questions/54933940/what-clock-does-the-visual-studio-2017-crt-implementation-of-stdchronosystem
上記によると最初に書いたAPIである模様
397デフォルトの名無しさん
2021/09/19(日) 19:46:00.85ID:neurUQ4a >>393
GetLocalTime()の精度が10 ms台だというのは
Windowsのデフォルトのスレッドへの最大ディスパッチ時間15.6 ms(PCによっては10 ms)の影響が混入している可能性、
>>392のリンク先のような計測方法をとった場合、計測中に他のスレッドに実行権を横取りされたりすると、どうしても
期待する時間に対して15.6 msとか(高優先のスレッドが相次いでディスパッチされた場合はあるいはもっと)実際の時間が大きくなる
一方>>375の計測方法は時間の順序にのみ注目しており、プリエンプションの影響を受けない(はずだった
この話に猜疑があるなら後で述べる
>>392
>>392の情報提供はdクスやし実際乗り換えようかと考えているが、それはそうとして、std::chronoのふるまいを検証しなくて委員会?
GetLocalTime()の精度が10 ms台だというのは
Windowsのデフォルトのスレッドへの最大ディスパッチ時間15.6 ms(PCによっては10 ms)の影響が混入している可能性、
>>392のリンク先のような計測方法をとった場合、計測中に他のスレッドに実行権を横取りされたりすると、どうしても
期待する時間に対して15.6 msとか(高優先のスレッドが相次いでディスパッチされた場合はあるいはもっと)実際の時間が大きくなる
一方>>375の計測方法は時間の順序にのみ注目しており、プリエンプションの影響を受けない(はずだった
この話に猜疑があるなら後で述べる
>>392
>>392の情報提供はdクスやし実際乗り換えようかと考えているが、それはそうとして、std::chronoのふるまいを検証しなくて委員会?
398デフォルトの名無しさん
2021/09/19(日) 20:05:49.20ID:neurUQ4a というわけでms単位のUNIX timeを得るにあたってstd::chronoとGetFileTimeAsSystemTime()が同じ精度であり互換であることを
直接検証すた、
https://ideone.com/9Opqj9
実行結果(Windows 10)
i=---: st1, chrono, st2: ORDER CHECK
i= 0: 1632049473157, 1632049473157, 1632049473157: OK.
i= 1: 1632049473158, 1632049473158, 1632049473158: OK.
i= 2: 1632049473159, 1632049473159, 1632049473159: OK.
i= 3: 1632049473159, 1632049473159, 1632049473159: OK.
i= 4: 1632049473159, 1632049473159, 1632049473159: OK.
i= 5: 1632049473159, 1632049473159, 1632049473159: OK.
i= 6: 1632049473159, 1632049473159, 1632049473159: OK.
i= 7: 1632049473159, 1632049473159, 1632049473159: OK.
i= 8: 1632049473160, 1632049473160, 1632049473160: OK.
i= 9: 1632049473160, 1632049473160, 1632049473160: OK.
NG times=0/10
問題無くなったやたー
直接検証すた、
https://ideone.com/9Opqj9
実行結果(Windows 10)
i=---: st1, chrono, st2: ORDER CHECK
i= 0: 1632049473157, 1632049473157, 1632049473157: OK.
i= 1: 1632049473158, 1632049473158, 1632049473158: OK.
i= 2: 1632049473159, 1632049473159, 1632049473159: OK.
i= 3: 1632049473159, 1632049473159, 1632049473159: OK.
i= 4: 1632049473159, 1632049473159, 1632049473159: OK.
i= 5: 1632049473159, 1632049473159, 1632049473159: OK.
i= 6: 1632049473159, 1632049473159, 1632049473159: OK.
i= 7: 1632049473159, 1632049473159, 1632049473159: OK.
i= 8: 1632049473160, 1632049473160, 1632049473160: OK.
i= 9: 1632049473160, 1632049473160, 1632049473160: OK.
NG times=0/10
問題無くなったやたー
399デフォルトの名無しさん
2021/09/19(日) 20:13:38.40ID:neurUQ4a >>393
GetSystemTime()は確かに根本的に精度悪かったスマンカッタorz
この結果からすると、ウィンドーズのシステム時間のの実装は、
OSがプリエンプトした際に更新し、ディスパッチ中は値が変わらないというしくみな可能性が大きい
※ 取得時間の間隔が15.6 msの倍数にならないのは、15.6 msというのがあくまで1津のスレッドが
ディスパッチされてからプリエンプトされるまでの「最大」時間であって実際は高優先のやつに横取りされたり
自発的に待ちに入ったりで15.6 msより小さい時間で実行権をOSに返すからだと思う
GetSystemTime()は確かに根本的に精度悪かったスマンカッタorz
この結果からすると、ウィンドーズのシステム時間のの実装は、
OSがプリエンプトした際に更新し、ディスパッチ中は値が変わらないというしくみな可能性が大きい
※ 取得時間の間隔が15.6 msの倍数にならないのは、15.6 msというのがあくまで1津のスレッドが
ディスパッチされてからプリエンプトされるまでの「最大」時間であって実際は高優先のやつに横取りされたり
自発的に待ちに入ったりで15.6 msより小さい時間で実行権をOSに返すからだと思う
400デフォルトの名無しさん
2021/09/19(日) 21:46:58.47ID:UeoKc9fZ 古いWIN32開発者には常識的な話で検証の必要もなく、実際に検証用のプログラムは昔から大量に作られてるからだと思う
取得時間の間隔が15.6 msの倍数にならないのは「主に16ビット Windows との下位互換性のため」
https://docs.microsoft.com/ja-jp/windows/win32/sysinfo/windows-time
取得時間の間隔が15.6 msの倍数にならないのは「主に16ビット Windows との下位互換性のため」
https://docs.microsoft.com/ja-jp/windows/win32/sysinfo/windows-time
401デフォルトの名無しさん
2021/09/19(日) 22:17:24.32ID:k8GedCcQ >>400
後半って「Windows時刻」の説明だよね?
GetSystemTimeで得られるのは「システム時刻」であって、また別の時刻体系だと読んだけど間違ってる?
https://docs.microsoft.com/ja-jp/windows/win32/sysinfo/system-time
WinAPIスレに持っていったほうがいいかもな
後半って「Windows時刻」の説明だよね?
GetSystemTimeで得られるのは「システム時刻」であって、また別の時刻体系だと読んだけど間違ってる?
https://docs.microsoft.com/ja-jp/windows/win32/sysinfo/system-time
WinAPIスレに持っていったほうがいいかもな
402デフォルトの名無しさん
2021/09/19(日) 22:38:35.16ID:UeoKc9fZ■ このスレッドは過去ログ倉庫に格納されています
ニュース
- ネット殺到「高市総理の責任」「完全に高市リスク」「負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 ★11 [樽悶★]
- 外国人の犯罪率は日本人の1.72倍 警察庁が短期滞在者除いた数字を参院内閣委で答弁★2 [七波羅探題★]
- 【日中対立】 朝日新聞のタイトル修正が中国逆ギレの火種か SNSで批判相次ぐ [♪♪♪★]
- ひろゆき氏 高市首相の台湾有事発言 「日本が得たものあまりない。経済的なマイナスは明確に存在」 [冬月記者★]
- アメリカ議会 「中国が台湾武力侵攻する準備を急速進展中」 ★5 [お断り★]
- 【音楽】『日本レコード大賞』各賞発表! 大賞候補にILLIT、M!LK、ふるっぱー、幾田りら、アイナ、ミセスら… 作詩賞は指原莉乃 [冬月記者★]
- 趣味なくてむなしすぎるんだが😭
- 【画像】「松屋、とんかつ松の屋」の数万着エプロンが大量に廃棄され結果としてディスカウントストアで販売。何があったのか? [776365898]
- 最近泳ぎ始めたんやがあんま痩せんな
- 16のヒッキー女に構って
- Redditの外国人たち、なぜか日本の江戸時代の『五人組』システムに興味津々。めっちゃ↑付いてるのに日本人の俺が知らない😰 [718678614]
- ソシャゲのRPG系ってさ
