[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 02/24 03:29 / Filesize : 284 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++相談室 part122



1 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 23:06:15.32 ID:HdItgJjm.net]
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。

前スレ
C++相談室 part121
peace.2ch.net/test/read.cgi/tech/1449240881/


このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.97【環境依存OK】
peace.2ch.net/test/read.cgi/tech/1439849418/

次期規格C++1zはこちら
C++14/C++1z 20
peace.2ch.net/test/read.cgi/tech/1410382924/

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

741 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 21:18:19.41 ID:PeChAo5O.net]
おめえがニート満喫してクソ暇なくせに超忙しいとか普通の人間なら恥ずかしくて憤死するレベルの嘘ついてコード書けずに逃げ回ってるからケチつけられてるんだといい加減気づけ?な?

742 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 21:21:30.22 ID:HGC0xuFL.net]
バカどもが顔真っ赤にして自己紹介
本当に嘘なら嬉しいんだけどなwww

743 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 21:22:41.29 ID:HGC0xuFL.net]
てかこんなとこでバカの相手してる場合じゃねえ>俺

744 名前:デフォルトの名無しさん [2016/02/12(金) 21:27:07.73 ID:dKyYxY1Q.net]
>>739
お前の主張は
> Windowsの場合、メモリアロケーションに失敗する前にPostMessageが失敗するようになるから
だからね。
「メモリアロケーションに失敗する前」

ま、お笑い劇場の舞台裏は全部解明出来てるから逃げ出しても良いけどね。

745 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 21:54:52.61 ID:PeChAo5O.net]
そろそろ釣れた釣れた言い出す頃合いかな?

746 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 22:06:57.63 ID:lbf6swjk.net]
この話題、いつまで引っ張るんだろう

747 名前:デフォルトの名無しさん [2016/02/12(金) 22:15:29.87 ID:dKyYxY1Q.net]
PostMessageはメモリアロケーション失敗の前兆として使える。キリッ

って、職場でドヤ顔してたんだろうな。
当時を憶えてる同僚とかいたらどうするんだ?

748 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 22:16:02.44 ID:isgeeUAQ.net]
HGC0xuFLがコードを提示するまで

749 名前:デフォルトの名無しさん [2016/02/12(金) 22:19:50.35 ID:dKyYxY1Q.net]
何年も前のいやな思い出で、それを上回るいやな思い出を作ってしまったバカが哀れでならない。
早期に逃走しとけばよかったのに。



750 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 22:38:34.72 ID:hlhHAQgj.net]
>>748
永遠に無理でしょ

751 名前:デフォルトの名無しさん [2016/02/12(金) 22:38:45.21 ID:ogWwf7PC.net]
>>736
PostMessageはC++だったんですね。そうとはきづかづごめんなさい

752 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 22:43:03.91 ID:HGC0xuFL.net]
ほんとにここは精神がねじれた低能の見本市だな
「PostMessageはメモリアロケーション失敗の前兆として使える」なんて俺は言ってもいないし
人の言ってることを曲解しては悦に入るバカどもの巣窟

753 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 22:48:37.57 ID:HGC0xuFL.net]
こういう多くのアプリが全滅してエクスプローラさえ死んじゃう状況でも
生き残らななきゃいけないソフト書いたことがないのが丸わかりのやつが
何をほざこうが片腹痛いだけだからw

754 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 22:55:13.94 ID:HGC0xuFL.net]
やっぱりあいつは死に至らせて正解だと思えてなごむわw

755 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 23:27:15.72 ID:W1VJFYp+.net]
やはり自然言語の理解力が欠落していると>>733>>734のようなとんちんかんなレスが続くんだな
レファレンスを100回読み直せ

756 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 23:38:11.01 ID:W1VJFYp+.net]
ここまで知能が低いと読んでもわからないだろうから一応補足しておくか

>>733
リファレンスには発生するエラーの一例しか紹介されていないのでエラーコードや対応策を書くことは不可能

>>734
「メモリ不足でエラーにならないとは書いてない」と「メモリ不足エラーが有るとは書かれていない」は矛盾しないしどちらも間違ってはいない
ただ「メモリ不足エラーはあり得ない」というのは間違い

757 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 23:39:06.98 ID:HGC0xuFL.net]
だいたいね。極限的な状況ではAPIが失敗することがあるなんて当たり前のことだし
PostMessageみたいな普通なら成功して当たり前のAPIが失敗した場合のGetLastErrorの結果なんてどうでもいいんだよ
そういうAPIが失敗したらエラーコードなんて関係なく休眠状態に入る
そうしてるうちにメモリーリーク犯人のプロセスは死ぬから目的は達成できるというわけ

758 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 00:03:32.55 ID:MUp0G3Pc.net]
>極限的な状況ではAPIが失敗することがあるなんて当たり前のことだし
抽象的過ぎ
当たり前なら何故具体例が一つもないのか?
被告の訴えを却下します

759 名前:デフォルトの名無しさん [2016/02/13(土) 00:24:37.37 ID:zKS/hYh5.net]
メモリ不足への対応の話題が続いた後、バカ颯爽と登場

471 デフォルトの名無しさん[sage] 2016/02/09(火) 08:07:47.87 ID:GGDlYrLi

Windowsでエクスプローラその他殆どのアプリがメモリ不足死んだ状態でも生き残らななきゃ
いけないシステム監視ソフトを書いたことがある俺に言わせるとそれほど難しいことじゃない
Windowsの場合、メモリアロケーションに失敗する前にPostMessageが失敗するようになるから
その辺に対応するのがコツ



760 名前:デフォルトの名無しさん [2016/02/13(土) 00:46:48.91 ID:zKS/hYh5.net]
APIのエラーコードをなんか取得しないのがあたり前 大爆笑

761 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 00:50:14.82 ID:rkbIirC9.net]
>>756
> リファレンスには発生するエラーの一例しか紹介されていないのでエラーコードや対応策を書くことは不可能

え“っ、マジで言ってる?

>>471 には
> その辺に対応するのがコツ

って書いてあるんだが w

まあご自慢の「対応」が…

>>757
> PostMessageみたいな普通なら成功して当たり前のAPIが失敗した場合のGetLastErrorの結果なんてどうでもいいんだよ
> そういうAPIが失敗したらエラーコードなんて関係なく休眠状態に入る

では恥ずかしくて書けんわな w
結局 >>512 で終了だったんじゃん

762 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 00:55:31.18 ID:CApp8RWm.net]
いい加減 スレ違いの荒らし共は去れ

763 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 00:58:17.06 ID:rkbIirC9.net]
>>760

>>509 で、
> PostMessageの戻り値を見たこともないゴミは黙ってろって

とか言ってたから、そこは
PostMessage の戻り値じゃなくて GetLastError だろ
って突っ込もうと思ったが、まさかのマジだったとは… w

ERROR_NOT_ENOUGH_QUOTA なんて見たこともなかったんだろうな

764 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 01:34:04.31 ID:u45lvCeq.net]
実務じゃ使いものにならないゴミクズが何をほざこうか俺の作った監視プログラムは目的を達成したからw
こういう状況じゃGetLastErrorなんて蛇足なんだよこのクソバカ

765 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 01:49:46.40 ID:u45lvCeq.net]
パフォーマンスカウンタを読みだすスレッドのRegQueryValueExとか
その結果をメインスレッドに伝えるためのPostMessage。ログを出力するための
ファイル操作とか極限的なリソース不足状態ではどこでどんなエラーが起ころうが
文句は言えない。俺の経験ではPostMessageが最初にエラーになったというだけだよ。
違うバージョンのOSでもそうなるかなんて知らないし、GetLastErrorなんてもっとどうでもいい。

766 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 01:57:26.09 ID:KZpZDJLQ.net]
PostMessage使わなきゃいーじゃんwwww

767 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 02:01:11.61 ID:u45lvCeq.net]
PostMessage使わなくたってそのうち他のAPIでエラーになるのは目に見えてるから
何の解決にもならないね

768 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 02:12:00.43 ID:u45lvCeq.net]
極限的なリソース不足状態ではソフトがまともに機能できるわけはないんだよ
そういう状況で可能なのは自分が死なないように極力耐えること
バカが作った穀潰しソフトが動いている以上もうどうしようもない
そのソフトを安易にkillできないという苦しい状況だったし
でもそのうちそのバカソフトは自滅するから「このバカソフトがメモリを食いつぶして
他のプロセスまで巻き込んで自滅しました」って報告ができたというわけ

769 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 02:18:24.92 ID:mOEZHanV.net]
C++で自分で直接メモリをアロックすんにゃ。
そういうのはライブラリに任せておけばいい。
メモリ確保してる処理は把握してなるべく使うな。
ほとんどスタックで片つくんだから。



770 名前:デフォルトの名無しさん [2016/02/13(土) 03:45:26.51 ID:zKS/hYh5.net]
>>763
それはね、日本語版msdnには「エラーを取得するには関数を使います」しか書かれてないからだよ 大爆笑

771 名前:デフォルトの名無しさん [2016/02/13(土) 03:50:36.67 ID:zKS/hYh5.net]
メモリアロケーションよりPostMessageがERROR_NOT_ENOUGH_QUOTAでFAILする理由なんて思いつきもしないんだろうな。

無い知恵振り絞って辿りついたのがPostMessageで診断 大爆笑

哀れ過ぎる

772 名前:デフォルトの名無しさん [2016/02/13(土) 03:52:23.57 ID:zKS/hYh5.net]
実務て使うマシンを素人ブロガーの戯言信じてページファイルオフにしちゃダメだぞ。

773 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 08:05:49.98 ID:rkbIirC9.net]
>>766
それな〜
プロセス数の上限が読めないからいちいちメモリー確保してるみたいだし(⇒>>493)、余計な苦労を明後日の方法で解決してドヤってるだけやね
まあ、そもそもこの監視ソフトとやらが本当に必要だったかどうかも怪しいみたいだけど w

774 名前:デフォルトの名無しさん [2016/02/13(土) 08:07:18.11 ID:GG2kKfuP.net]
【SendMessage】関数【PostMessage】関数についてご教授下さい。

開発中のシステムからメモ帳のウィンドウハンドル(入力ウィンドウ)を取得し、
SendMessageやPostMessageを行っています。

PostMessageは成功するのですが、SendMessageが失敗してしまます。

なぜ、SendMessageが失敗するのか、原因をご教授下さい。

コードは以下の通りです。
-------------------------------
HWND wh = FindWindow(nullptr, p);//pは”無題 - メモ帳”です 本体のウィンドウハンドルを取得
wh = GetWindow(wh,5);//入力欄のウィンドウハンドルを取得

SendMessage(wh, WM_KEYDOWN, 'A', 0);
PostMessage(wh, WM_KEYDOWN, 'B', 0);
-------------------------------

このコードを実行すると b のみ出力され a が出力されません。
なぜでしょうか?環境面など悪さしてますか?それともコーディング間違いでしょうか?

同期処理を実現したいのでSendMessageが使いたいのです。

環境は以下です。
--------------
Windows7
Visual Studio
C++ cli
--------------

775 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 08:10:50.39 ID:tl7vIPkr.net]
>>765
結局、「コツ」でもなんでもなかったと。

776 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 08:23:05.67 ID:HsLEl+zU.net]
>>774
upはどうした?
win32apiすれにgo

777 名前:デフォルトの名無しさん [2016/02/13(土) 08:25:44.61 ID:GG2kKfuP.net]
>>776
もちろんupも入れてみたんですが、やはりダメでした。
何が原因なんですかね・・・原因がわかれば納得できるのでpost使おうと思うのですが

778 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 09:19:28.60 ID:rkbIirC9.net]
>>774
取り合えず PostMessage の戻り値と戻値が 0 なら GetLastError の戻り値を確認することからかな

間違っても…
> PostMessageみたいな普通なら成功して当たり前のAPIが失敗した場合のGetLastErrorの結果なんてどうでもいいんだよ
なんてタワケの言うこと信じちゃダメだぞ w

779 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 09:31:02.81 ID:zKS/hYh5.net]
>>766
俺に言わせるとそれほど難しいことじゃない キリッ

> PostMessage使わなきゃいーじゃんwwww
それを外しちゃダメだよ ゴミカスが無い知恵振り絞って考え付いたと思い込んでる、メモリ不足対策のキモなんだから。
>>471
> Windowsでエクスプローラその他殆どのアプリがメモリ不足死んだ状態でも生き残らななきゃ
> いけないシステム監視ソフトを書いたことがある俺に言わせるとそれほど難しいことじゃない
> Windowsの場合、メモリアロケーションに失敗する前にPostMessageが失敗するようになるから
> その辺に対応するのがコツ


> 実務じゃ使いものにならないゴミクズが何をほざこうか俺の作った監視プログラムは目的を達成したからw
まぐれで動いたゴミクズを自慢するド素人 憐れ

codepad.org/CEp9Bp6L
PostMessageの戻り値見ても、メモリ不足対策にならないんだけど。 w
1816 3929 9999 unknown error
PostMessag=1 malloc=00000000 <==== PostMessage成功するけど、malloc出来ない
PostMessag=0 malloc=01EF0048 <==== PostMessage失敗なのに、malloc出来ちゃう

> 俺に言わせるとそれほど難しいことじゃない
> 俺に言わせるとそれほど難しいことじゃない



780 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 09:31:11.38 ID:ZcBYdk8a.net]
こちらにどうぞ

Win32API質問箱 Build122
peace.2ch.net/test/read.cgi/tech/1451988219/

781 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 10:18:33.52 ID:e6sIQV8m.net]
Visual Studio 2015 Update 2は変数テンプレートとUTF-8指定のオプションが付くようだ

782 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 10:27:59.74 ID:e6sIQV8m.net]
is_function<void()&>::valueの値が間違っているバグのレポートを上げていたが直っている模様

783 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 10:57:04.37 ID:u45lvCeq.net]
PostMessageの件
今朝ちょっと暇があったからWindows7 64bitで試してみたら簡単に再現したわ10分も掛からなかった
GetLastErrorの戻り値は1816(ERROR_NOT_ENOUGH_QUOTA )だ

784 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 11:34:57.57 ID:MUp0G3Pc.net]
で、再現コードは?

785 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 11:36:27.18 ID:mOEZHanV.net]
C++14はまだかー。

786 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 12:03:30.93 ID:u45lvCeq.net]
>>784
コードくれくれうざい
やり方は>>663に書いた
大事なのはメモリを真に使い果たす悪役プログラムを作ることだよ
>>627みたいなやり方じゃ全然話にならない
そういう極悪プログラムを作るのにはスキルがいるし、10年以上前に作ったやつだけど俺の力作だからそう簡単にくれてやらねーよ
犠牲者の方はシンプルなやつでいい

787 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 12:10:30.02 ID:Zu4nB+6U.net]
 そういう極悪プログラムを作るのにはスキルがいるし
 10年以上前に作ったやつだけど俺の力作だからそう簡単にくれてやらねーよ

.

788 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 12:14:02.97 ID:MUp0G3Pc.net]
簡単に再現できること
当たり前であることと矛盾しますね
また複雑である場合他の部分の副作用である可能性は否定できません
証明義務のあるu45lvCeqに再度コードの提示を求めます

789 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 12:18:11.17 ID:zKS/hYh5.net]
>>783
>>783
> GetLastErrorの戻り値は1816(ERROR_NOT_ENOUGH_QUOTA )だ
QUOTAの意味分かるか? 爆笑

>>786
> >>627みたいなやり方じゃ全然話にならない
プログラムがどうやって動いているか、原理を理解してないバカ。www

codepad.org/CEp9Bp6L
PostMessageの戻り値見ても、メモリ不足対策にならないんだけど。 w
1816 3929 9999 unknown error
PostMessag=1 malloc=00000000 <==== PostMessage成功するけど、malloc出来ない
PostMessag=0 malloc=01EF0048 <==== PostMessage失敗なのに、malloc出来ちゃう

俺に言わせるとそれほど難しいことじゃないんで、くれてやるよ。



790 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 12:26:08.81 ID:zKS/hYh5.net]
>>786
俺に言わせるとそれほど難しいことじゃないんで、今回は特別に教えてやるよ。 W大爆笑

絶対に死んではいけないプログラムにウインドウ持たせるのは、絶望的にプログラミングセンスが無い。
お前、ホームレスに転職した方が良いぞ。

791 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 12:27:17.07 ID:rkbIirC9.net]
>>786
> そういう極悪プログラムを作るのにはスキルがいるし、10年以上前に作ったやつだけど俺の力作

って

>>513
> 低能が作った穀潰しゴミソフト

の話だよね

もう病院に駆け込んだ方がいいレベル w

792 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 12:50:15.26 ID:zKS/hYh5.net]
>>786
なんか、応用の聞かない「メモリ不足対策」だね。
>>627みたいな超簡単な悪役にも対応できないのか。

墓穴掘ってやがる。ゴミクズって本当にバカだな。

793 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 13:56:19.68 ID:7PDbXjKY.net]
どうしてコテハンは慈演をつづけるの

794 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 13:59:03.92 ID:Th9NieDp.net]
C言語の検索するとC++のことが出てきやがってマジで迷惑。 いい加減にしてほしい。

795 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 14:52:35.59 ID:e6sIQV8m.net]
そんな794に訃報だ
ハーブサッターはVisual C++がC99をサポートしない理由を訊かれて「しないからしない」的なアスペな回答をしている
Cにしかない機能以外は対応するが、それ以外はCはC++のサブセットとしてC++を使えということだ

796 名前:デフォルトの名無しさん [2016/02/13(土) 15:12:53.44 ID:GG2kKfuP.net]
>>774
>>776
>>777
>>778

ありがとうございます。
SendMessage(wh, WM_CHAR, 'A', 0);
で出来ました。

つまり、SendMessage でWM_KEYDOWN は使えないということですね?

次のステップなのですが、
「右矢印キーを2回押す」や「ctrl+Sを押す」といった事は、
SendMessageで行えますか?PostMessageを使うしかないでしょうか?

コード例以下です。
「右矢印キーを2回押す」
SendMessage(wh, WM_KEYUP, VK_RIGHT, 0);
SendMessage(wh, WM_KEYUP, VK_RIGHT, 0);
「ctrl+Sを押す」
SendMessage(wh , WM_KEYDOWN , VK_CONTROL , 0);
SendMessage(wh , WM_KEYDOWN , 'S' , 0);
SendMessage(wh, WM_KEYUP, VK_CONTROL, 0);
SendMessage(wh, WM_KEYUP, 'S', 0);

797 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 15:15:43.59 ID:jEq/NF/M.net]
スレ違いをスルーせず中途半端に乗っかるからこうなる。誘導以外触れないほうがいい。

798 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 15:35:45.74 ID:QD8KbUeS.net]
>>796
メモ帳立ち上げてkeybd_event()でやった方が早いぞ

799 名前:デフォルトの名無しさん [2016/02/13(土) 16:05:47.92 ID:GG2kKfuP.net]
>>796
>>798
keybd_eventやSendInputは最前面ウィンドウに対する操作になってしまうので、
使えないです。
※ウィンドウが最前面か否かに関わらず常に安定した操作を実現したいのです



800 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 17:09:11.77 ID:MXADxP3M.net]
>>738以後誰も>>589にレスしてないのでレスすると
自分はあいぽんアプリ作りたくてXcode+Clang(とllvm gcc)使ってるよ
ここはVCの独自仕様を嫌うコメが結構出るし、VCばっかりということはないはず
自分も以前はWin+VCばっかりだったけど、Clangやgccに移植していかに自分のコードが
独自仕様に頼ってたか思い知らされた・・・

801 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 17:36:13.24 ID:e6sIQV8m.net]
>>589
そもそもコンパイラーを使っていない

802 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 17:50:22.29 ID:8c5F/b7w.net]
C++erのスルースキルの無さは異常

803 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 18:13:39.59 ID:Th9NieDp.net]
馬鹿をV$に隔離するためには役立ってるんだからそこに触れるのは駄目。

804 名前:デフォルトの名無しさん [2016/02/13(土) 18:18:04.37 ID:UpZGp0t4.net]
codepad.org/Vtcbp6N8
のコード、g++4.9.3でコンパイルすると
main.o:main.cpp:(.rdata$.refptr._ZN4hogeILw65EE5valueE[.refptr._ZN4hogeILw65EE5valueE]+0x0): `hoge<(wchar_t)65>::value' に対する定義されていない参照です
とエラーが出ます。
109行目をコメントアウトするとコンパイル出来ます。何故ですか

805 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 18:33:19.74 ID:mOEZHanV.net]
>>804
あっさーとで落ちてるからなんかチョンボしてる。かな?

806 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 18:40:12.59 ID:jEq/NF/M.net]
>>804
static const メンバ変数に初期化子をつけて宣言しても定義にはならないから。
面倒だが別途定義を書いておかないと、 const& に渡した場合などアドレスが必要になる
ような使い方をした時点でそういうエラーが出ることがある。
9.4.2 [class.static.data] p3
https://www.google.co.jp/search?q=%22The+member+shall+still+be+defined%22&lr=lang_ja

807 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 19:52:01.47 ID:2d9oUeOe.net]
えつ

808 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 20:26:47.13 ID:e6sIQV8m.net]
const&はともかくアドレスを必要とする場合、
shallで要求されたことを満たしていないのでエラー等のメッセージを出す義務があるのではないだろうか
1.4 Implementation compliance p2

809 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 20:55:19.29 ID:ISK/9ZCR.net]
出ることがあると言うか、出さなきゃあかんよな。



810 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 22:00:43.12 ID:5ubtGtDT.net]
そんなバカな......

811 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 00:02:32.46 ID:M72BiSZl.net]
>>810
疑問があるなら率直に書きなさいな。

812 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 00:09:59.23 ID:rASW1SI1.net]
アスペに「何かしゃべれよ」とか拷問過ぎるw

813 名前:デフォルトの名無しさん [2016/02/14(日) 00:26:17.27 ID:YtvhXGz3.net]
俺に言わせるとそれほど難しいことじゃない

814 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 00:35:43.88 ID:qwowkzgX.net]
>>811

>>806に書いてある
>static const メンバ変数に初期化子をつけて宣言しても定義にはならない

のことだよ。
クラステンプレートの場合は、クラス内宣言が定義になるんじゃないの?

815 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 00:41:08.95 ID:YtvhXGz3.net]
最新の規格書読んだこと無い素人は回答を控えるように
無理して回答する必要ないから

816 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 01:45:35.51 ID:Ssn6bioA.net]
よし最新の企画を読んだ俺が答えてやろう

クラスとクラステンプレートで宣言と定義に大差は無い
template<typename T> struct a {
 constexpr static int N = 0;
};
template<typename T> constexpr int a<T>::N;//アドレスを要求される場合必要
int main(){
f(&a<int>::N);
}

817 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 02:03:22.21 ID:2H7lNMsF.net]
×:企画
○:規格

818 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 02:17:54.69 ID:Ssn6bioA.net]
大丈夫だ。最新の規格も読んだのでぬかりはない
だが規格よりドラフトN4567の3.2 One definition ruleの方が近い例が書かれている

819 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 05:43:49.28 ID:trZrfj/6.net]
最新の規格ももちろん重要だが、C++は変化が激しいので
C++14でこうなった(規格引用)、C++11ではこうだった(規格引用)、
みたいに紹介してくれると余計に有難い。

広く普及してる開発環境が最新規格に追いついてるとは限らないしね。



820 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 07:43:32.58 ID:Ssn6bioA.net]
大丈夫だ。規格は全版揃えているからぬかりはない
規格は>806の通りで最初からこの仕様はある

C++98『The member shall still be defined in a namespace scope if it is used in the program and the namespace scope definition』
この時点でif it is usedが何を意味するのか説明が漏れていて(次の段落を読むと意図は想像できたが)、
C++11『if it is odr-used (3.2) in the program and the namespace scope definition』
と「odr-used」と言う言葉が導入された。これがリンカーの仕事が必要となるような使い方を意味する。
N4567では3.2のサンプルコードでstatic const int変数を
const int &f(const int &r);
に渡してodr-used here, so a definition is requiredとコメントが書かれている

821 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 08:59:22.24 ID:IJ2u9HkZ.net]
ああっ!出る!!出るぞ!!ぴゅっぴゅっ

…ふぅ、また>>815の顔にかけてしまった

822 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 13:01:29.21 ID:H3NWVMks.net]
>>815が規格票の解釈を間違えているとしたら誰が指摘するのか

823 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 13:20:05.11 ID:+WF+5Yyl.net]
クラステンプレートのstatic const整数型データメンバの定義を外側に書いたことはないな。
大昔は enum 使ってたし。

824 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 13:22:40.71 ID:YtvhXGz3.net]
変更か多い箇所だから、単に要求しただけだ。
PostMessageでメモリ状況の診断するような素人が紛れ込むと混乱するからね。

825 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 13:30:57.56 ID:jQtJnDco.net]
XpでSendMeassageしまくると超もたつくというのはあるけど
PostMessageでメモリの使用状況調べるのは初耳だな

826 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 14:10:17.13 ID:jkMZu/bi.net]
>>822
規格を読んだ他の人が指摘するだけ。何を心配してる?
>>815はわざわざ検証しやすいよう検索結果を示してるし、
N4567は誰でもダウンロードできるし、
メイヤー先生の本にも書いてあることだし。

827 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 17:53:52.82 ID:M72BiSZl.net]
>>820
お疲れ様、プロの規格読みの人。

828 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 18:18:09.59 ID:YtvhXGz3.net]
>>825
今週来てなかったのか? ド素人の>>471からの暴れっぷりを楽しんでくれ。

829 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 18:27:29.02 ID:/+rigQ84.net]
>>471
PostMessageの挙動ってメモリアロケーションと無関係では?
だとしても、確認のためにPostMessageをうつのかな



830 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 18:40:15.29 ID:KVV6N47s.net]
おいやめろ。蒸し返すな。気になるならWin32APIスレに行け。

831 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 18:55:30.00 ID:2GOq4jA1.net]
わざとやっているんだろう
WIN32APIの仕様の話など、どうでもいいわ

832 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 19:02:17.52 ID:bGJc4W0W.net]
なんかC++の質問しづらいね

本当に初歩的な質問なんですけど
C++のThreadはWindowsじゃ使えないのでしょうか、それともgcc4.8.1のほうが悪いのでしょうか

833 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 19:05:42.38 ID:mwiD0ozs.net]
多分最終的な論点はそこじゃなくて
なんでメモリが極限状態でOSのAPIが失敗するような状況下でも生き残らないといけないような
究極のログ取りアプリを作らないといけない時に、PostMessageなんか使ったのか、だろうな
彼はなにかメインスレッドに結果を伝えるためにPostMessageを使ったらしいが
メモリ使用量調べてログファイルに書き出すだけの、メモリリークの証拠をつかむためだけの
使い捨てのアプリにサブスレッドなんかいるか?
適当なウエイトかけてループ回して、メモリ使用量取得して、ログファイルに書き出す
これだけだろ
多少何か工夫するにしてもPostMessageの出番は無いように思うが
極限状態でも生き残らなきゃならないなら、なおさらのこと、余計な仕組みは要らないだろう
ウィンドウも要らない

834 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 19:27:01.38 ID:k6vnuBvm.net]
>>832
c++11のstd::threadならきちんと設定されたコンパイラ、ライブラリなら使えるはず。
gccのバージョンは知らんが、win上で使うなら、mingwだったりcygwinだったりの影響もあるしなんとも言えない。

そもそも使えないってどういう事?

835 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 19:42:39.56 ID:YtvhXGz3.net]
>>832
stackoverflow.com/questions/21211980/mingw-error-thread-is-not-a-member-of-std
ここいらへんか?

836 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 20:05:21.87 ID:YtvhXGz3.net]
>>833
ウインドウもってるだけじゃなくてメモリアローケーションも必須とか言ってるから、
そういうプログラムを作るだけの技量が無い素人が無理して作ったので根本的にダメ。
MFCで作ってたりするかも。爆笑

ところで、以前から気になってたので「"throw new" C++」で検索すると40万件もヒットする。
「throw newは禁じ手」って書かれてるページもあるだろうけど、アホなページが多すぎる。
例外投げる時に例外発生する可能性のある操作なんか、頭沸いてるとしか思えない。(しかもdeleteしないとリークするし)
さらに、C#から入ってきたアホはnewするのが当たり前とか、死ね。

476 :デフォルトの名無しさん:2016/02/09(火) 17:42:12.67 ID:GGDlYrLi
>>475
システム監視ソフトだからといってメモリ確保しなくていいわけじゃないです
そのソフトはどのプロセスがいつ起動してどれだけのメモリを使用していつ終了したかを
ログするものでしたがその過程で新たなメモリ確保はどうしても発生します

837 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 20:52:58.77 ID:YKrrGoZL.net]
>>829
すまん>>828のから飛んで脊髄反射でレスしてしまった
無視してくれ

838 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 20:54:44.07 ID:YKrrGoZL.net]
あ、IDかわってるけど、>>829は俺で自己レスね

839 名前:デフォルトの名無しさん [2016/02/14(日) 22:02:02.79 ID:uelnhBqi.net]
ウィンドウハンドルに対する操作関連をまとめた、
自作クラスを作成しています。

以下コードの★★の箇所で以下のコンパイルエラーとなります。
-------------------
error C3867: 'AutoOperation::EnumChildProc': 関数呼び出しには引数リストがありません。
メンバーへのポインターを作成するために '&AutoOperation::EnumChildProc' を使用してください
-------------------

エラー表記通り「&AutoOperation::EnumChildProc」に変えると、
今度は以下のコンパイルエラーとなります。
-------------------
error C3374: delegate インスタンスを作成する場合以外に、'AutoOperation::EnumChildProc' のアドレスを指定できません
-------------------


やりたい事はクラス内でCALLBACK関数の呼び出し処理EnumChildWindowsを完結させたいのです。

解決策をご教授下さい。



840 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 22:27:21.41 ID:r/RAVviG.net]
>>834
すみません、自己解決してしまったのですが、そもそもライブラリがないという状況でした

MinGWを4.9.2にしたらコンパイルが通りました!

841 名前:デフォルトの名無しさん mailto:sage [2016/02/14(日) 22:31:54.01 ID:jQtJnDco.net]
>>839
AutoOperationはクラストか?クラスなら
AutoOperation::EnumChildProcがstaticでないとうまくいかんよ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<284KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef