【初心者歓迎】C/C++室 Ver.90【環境依存OK】
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2014/03/25(火) 00:45:54.57ID:VoemgV7uただしその場合、質問者は必ず環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。
【前スレ】
【初心者歓迎】C/C++室 Ver.89【環境依存OK】
http://toro.2ch.net/test/read.cgi/tech/1390171944/
◆ソースのインデントについて
半角空白やTABでのインデントはスレに貼ると無くなります。
そのため、アップローダーに上げるのも手ですが直接貼る場合は、
全角空白か に置換すると見栄えだけはよくなります。
【アップローダー】(質問が長い時はココ使うと便利)
http://codepad.org/ (コンパイルもできるし出力結果も得られる[]privateをチェック)
http://ideone.com/ (時間帯によってはcodepadが重い事があるのでここも利用)
hogeは禁止します、使用しないでください。
万が一hogeが書き込まれても、スルーしてください。
相手にするとあなたも荒らしと同じ扱いになります。
なお、hogeはNGワードに追加しておくことが強く推奨されています。
0002デフォルトの名無しさん
2014/03/25(火) 00:46:37.60ID:VoemgV7u0003デフォルトの名無しさん
2014/03/25(火) 00:49:06.88ID:bvFcvrs80004デフォルトの名無しさん
2014/03/25(火) 00:49:55.79ID:VoemgV7u0005デフォルトの名無しさん
2014/03/25(火) 00:56:06.42ID:bvFcvrs80006デフォルトの名無しさん
2014/03/25(火) 08:45:20.17ID:b1DcnFZ10007デフォルトの名無しさん
2014/03/25(火) 18:57:42.36ID:mtUgnBBf0008デフォルトの名無しさん
2014/03/25(火) 21:01:46.39ID:A1lqZyhT自由に使って構いません
0009デフォルトの名無しさん
2014/03/26(水) 00:51:02.53ID:oexEF2Zl0010デフォルトの名無しさん
2014/03/27(木) 21:24:22.59ID:bJmMH0bSmakefileの使い方が分かりません。
どなたか教えてくれませんか?
0011片山博文MZジェバンニ ◆T6xkBnTXz7B0
2014/03/27(木) 21:55:02.97ID:pkdNwHUQMakefileがあるコマンドラインでmakeまたはmake -f Makefileを実行すると、ビルドが開始される。
make cleanでコンパイル後のオブジェクトをきれいさっぱり消す。
make (ルール名)でMakefileに書かれたルールを実行する。ルールは次のように記述する:
ルール: 必要なファイルのスペース区切り
<タブ文字>実行するコマンド
詳しくは附属のヘルプを見ろ
0012デフォルトの名無しさん
2014/03/27(木) 21:55:09.35ID:iFr+67KQと入力してEnterをおします
0013デフォルトの名無しさん
2014/03/27(木) 21:58:54.48ID:pkdNwHUQ(正)Makefileがあるフォルダのコマンドプロンプト
0014デフォルトの名無しさん
2014/03/27(木) 22:02:28.05ID:hIRwfa74日本語でおk
0015デフォルトの名無しさん
2014/03/27(木) 22:08:24.63ID:pkdNwHUQ古くないWindowsならShift+フォルダ右クリックでコマンドプロンプトが開ける
0016デフォルトの名無しさん
2014/03/27(木) 22:10:06.86ID:bJmMH0bSmakefileというファイルに以下のように記述しました。
#
# Borland社のBorland-C++コンパイラ用のMakefile
#
CC=bcc
#
# フラグ
# -N -- スタックオーバーフローのチェック
# -v -- デバッグ可能
# -w -- すべての警告をオンにする
# -ml -- ラージモデル
#
CFLAGS=-N -v -w -ml
calc1.exe: calc1.c
$(CC) $(CFLAGS) -ecalc1 calc1.c
clean:
erase calc1.exe
0017デフォルトの名無しさん
2014/03/27(木) 22:14:20.02ID:pkdNwHUQ0018デフォルトの名無しさん
2014/03/27(木) 22:18:41.99ID:pkdNwHUQ0019デフォルトの名無しさん
2014/03/27(木) 22:23:05.34ID:pkdNwHUQ0020デフォルトの名無しさん
2014/03/27(木) 22:23:47.82ID:bJmMH0bS「ディレクトリ名が無効です」になります。
0021デフォルトの名無しさん
2014/03/27(木) 22:24:52.62ID:lIcuNLQ3今更そんな古い環境使うとか苦行だろ
0022デフォルトの名無しさん
2014/03/27(木) 22:25:13.90ID:pkdNwHUQ0023デフォルトの名無しさん
2014/03/27(木) 22:28:10.86ID:bJmMH0bS'make'は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたバッチファイルとして認識されません
とでます。
0024デフォルトの名無しさん
2014/03/27(木) 22:28:38.98ID:pkdNwHUQ0025デフォルトの名無しさん
2014/03/27(木) 22:31:28.19ID:ErFGKncP0026デフォルトの名無しさん
2014/03/27(木) 22:32:03.27ID:pkdNwHUQbccのインストールができてない。
まずは環境変数PATHを設定する。
「SET PATH=%PATH%;bccのあるフォルダへのパス」
0027デフォルトの名無しさん
2014/03/27(木) 22:33:02.94ID:V0dGQBZuプログラムの前にDOSの勉強をしろ
0028デフォルトの名無しさん
2014/03/27(木) 22:41:07.96ID:pkdNwHUQお前はそれでも地球人か!!!
0029デフォルトの名無しさん
2014/03/27(木) 22:44:32.34ID:bJmMH0bSmakeを押しても何の反応もありませんが。
0030デフォルトの名無しさん
2014/03/27(木) 22:46:00.71ID:lIcuNLQ30031デフォルトの名無しさん
2014/03/27(木) 22:47:11.61ID:pkdNwHUQ0032デフォルトの名無しさん
2014/03/27(木) 22:47:17.82ID:bJmMH0bS0033デフォルトの名無しさん
2014/03/27(木) 22:50:45.73ID:pkdNwHUQ0034デフォルトの名無しさん
2014/03/27(木) 22:51:15.73ID:bJmMH0bSそれとも、makefile.exeのように出てくるのでしょうか?
0035デフォルトの名無しさん
2014/03/27(木) 22:53:22.32ID:bJmMH0bSmakefileに書く書式でしょうか?
0036デフォルトの名無しさん
2014/03/27(木) 22:58:18.30ID:bJmMH0bSプログラムのスペース文字のことですね。
0037デフォルトの名無しさん
2014/03/27(木) 23:04:46.62ID:pkdNwHUQMakefile中のコマンドの前にはTab文字を入力しないといけない。
「CD」で現在のフォルダの場所(パス)を確認しろ。calc1.cを右クリックプロパティで場所を確認しろ。
0038デフォルトの名無しさん
2014/03/27(木) 23:15:12.68ID:iFr+67KQたとえば、4個の半角空白を\tに置換します
しかしそれができるエディタなら、タブ文字がはいるだろう
0039デフォルトの名無しさん
2014/03/27(木) 23:19:21.00ID:bJmMH0bSパスとcalc1.cの場所は同じです。
0040デフォルトの名無しさん
2014/03/27(木) 23:22:14.63ID:pkdNwHUQMakefileがMakefile.txtになってる可能性があるな
0041デフォルトの名無しさん
2014/03/27(木) 23:27:47.79ID:bJmMH0bS0042デフォルトの名無しさん
2014/03/27(木) 23:30:50.82ID:pkdNwHUQ念のために「DIR」して確認してくれ。
0043デフォルトの名無しさん
2014/03/27(木) 23:36:59.26ID:TRNtuGkP0044デフォルトの名無しさん
2014/03/27(木) 23:39:08.03ID:bJmMH0bS0045デフォルトの名無しさん
2014/03/27(木) 23:39:22.57ID:LrW8OE+k0046デフォルトの名無しさん
2014/03/27(木) 23:40:29.85ID:fqEnNET5変なこと教えるなよ。
ドライブごとのカレントフォルダーは
今となっては誰も欲してない機能なんだから
cd /d 移動先のパス
にしとけ。
0047デフォルトの名無しさん
2014/03/27(木) 23:45:04.99ID:pkdNwHUQ0048デフォルトの名無しさん
2014/03/27(木) 23:55:18.99ID:pkdNwHUQ0049デフォルトの名無しさん
2014/03/27(木) 23:58:38.08ID:pkdNwHUQ0050デフォルトの名無しさん
2014/03/28(金) 00:02:57.04ID:CsDGXoI3Clangになって一番すごいWinのコンパイラーに進化したらしいよな
0051デフォルトの名無しさん
2014/03/28(金) 00:41:16.94ID:yDdY0uS30052デフォルトの名無しさん
2014/03/28(金) 00:52:34.68ID:vM8zXvpObcc -N -v -w -ml -ecalc1 calc1.c
'bcc'は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチファイルとして認識されていません。
** error 1 ** deleting calc1.exe
0053デフォルトの名無しさん
2014/03/28(金) 01:08:29.53ID:a5++l4GPじゃあパスが通ってないんだろう、環境変数のpathnの項を弄れ
やり方? bccの使い方を説明するサイトとか本にはだいたい載ってるだろと
0054デフォルトの名無しさん
2014/03/28(金) 01:09:57.34ID:CsDGXoI3違う,いまのBorlandは
clang -o calc1.exe calc1.c
0055デフォルトの名無しさん
2014/03/28(金) 01:12:20.51ID:CsDGXoI3Borlandにはbccなんてのはないから、当然>>52になる
0056デフォルトの名無しさん
2014/03/28(金) 01:15:11.69ID:CsDGXoI30057デフォルトの名無しさん
2014/03/28(金) 01:21:27.24ID:ZLrJM0xQ0058デフォルトの名無しさん
2014/03/28(金) 01:27:34.35ID:vM8zXvpOmakeを入力すると52のように表示されます。
0059デフォルトの名無しさん
2014/03/28(金) 01:29:03.46ID:vM8zXvpO0060デフォルトの名無しさん
2014/03/28(金) 02:01:11.81ID:vM8zXvpOに書き換えたら行けました。
そしたら今度は
コマンドオプションの間違い -ml
というエラーが出ました。
-mlをとってmakeをしたら上手くいきました。ラージモデル-mlは認識されていないのでしょうか?
教科書通りにしてるのにおかしいですね。
0061デフォルトの名無しさん
2014/03/28(金) 02:34:35.65ID:Bi202b4z俺Winの知識ないって自慢し過ぎ
bcc32に限らずwinのコマンドのオプションリスト表示すら出したことないだろ
winの経験が少しあれば普通はオプションリスト表示オプションを付けて起動して、
どんなオプション付けられ、それが何をするのか調べることぐらい出来ると思うが
winの場合のオプションリスト表示は /? ってのが普通(常識)
0062デフォルトの名無しさん
2014/03/28(金) 02:42:52.86ID:oiG2WFSt0063デフォルトの名無しさん
2014/03/28(金) 02:51:20.42ID:Bi202b4z16bitとはおいおいすぎ><
16bitのプログラムを開発したいから、わざわざBorlandを選んだのかな
0064デフォルトの名無しさん
2014/03/28(金) 05:13:02.52ID:FWVtOBdw0065デフォルトの名無しさん
2014/03/28(金) 10:06:39.77ID:6uoLiniK馬鹿になんてしてないよ。
遊んでいることは否定しないけど。
0066デフォルトの名無しさん
2014/03/28(金) 11:40:09.31ID:dRXuKu/3そりゃsizeofをプリプロセッサが処理するような処理系を好んで使うような奴だもの
0067デフォルトの名無しさん
2014/03/28(金) 11:52:19.86ID:WLy6H0qs0068デフォルトの名無しさん
2014/03/28(金) 12:29:41.58ID:dy0OpFC/bccに-mlでバージョン出さない時点で普通に古いコンパイラを前提にするだろ
0069デフォルトの名無しさん
2014/03/28(金) 13:04:27.64ID:RWL6RT/i0070デフォルトの名無しさん
2014/03/28(金) 17:42:32.13ID:vM8zXvpOオプションリスト表示はどのように開くのでしょうか?
コマンドプロンプトに/?を入力しても反映されません。
0071デフォルトの名無しさん
2014/03/28(金) 18:40:43.95ID:YNdMan3ybcc32
と入力してEnterをおします
むかしBorland C++Builder バージョン5か6のおまけとして
コマンドラインコンパイラのオプションの表が付属していました。
それと異なります。たぶん全部を表示しないと思われます
0072デフォルトの名無しさん
2014/03/28(金) 18:47:27.10ID:YNdMan3yいいコンパイラだよ
0073デフォルトの名無しさん
2014/03/28(金) 18:50:58.97ID:YNdMan3y0074デフォルトの名無しさん
2014/03/28(金) 21:02:05.81ID:vM8zXvpO表示されました。ありがとうございます。
>>73
今、オライリーのC実践プログラミングという教科書を使用しているのですが、
その中に例として出ているプログラムです。
そうそう、コードガードはわりと便利、評価版をダウンロードすればいいし
0076デフォルトの名無しさん
2014/03/29(土) 12:43:43.99ID:OMABeBxL煽られているように、とりまそれ最新じゃないよ
時代は便利になったんだ。
codepad, ideone もあるよ。 >>1
0077デフォルトの名無しさん
2014/03/29(土) 12:48:33.82ID:T0jzXlJEいわゆる分割コンパイルにも対応してほしいな、makefile いれとけるとか
0078デフォルトの名無しさん
2014/04/01(火) 18:44:18.29ID:zkzJISd42つ教えてください。
1つ目
まず、MFCで自動作成されたソースファイルを見てもmain()?winmain()?_tmain()?すら見つかりません。
イベントドリブンだから、初期化とそれぞれのイベントに対応した部分以外は触る必要がないので隠されているのでしょうか?
なんとなくでも全体の流れを把握したいのでmain()にあたる部分を見たいのですが、どこに置いてあるのでしょうか?
2つ目
VisualStudioで作成したソースを、フリーで落とせる、C++の勉強に使っていたようなC++コンパイラでコンパイルすることはできるのでしょうか?
複数のファイルに分かれたようなプログラムを書いたことがないのでmakefileとかもよくわかってはいないし、目的があって他のコンパイラを使いたいわけでもないのですが、
VisualStudioで作成したソースはVisualStudioを使わないとコンパイルできない特殊な仕様なのか、
(ファイル間の関係を理解して正しくmakefileを書けば)あくまで普通のC++の仕様に従った、一般的なコンパイラが理解できるソースを作成しているのか知りたいと思っています。
0079片山博文MZジェバンニ ◆T6xkBnTXz7B0
2014/04/01(火) 19:06:36.07ID:28c8XDsv有料VC++がインストールされているフォルダのどこかにMFCのソースがある。
初心者には膨大なのでgrepを使いこなさないと読めない。
WinMainとCWinAppを読めば動作がわかる。
2つめ。ソースプログラムやコンパイラによる。ソースがC++11なら
C++11に準拠したコンパイラでなければ使えない。
0080デフォルトの名無しさん
2014/04/01(火) 19:14:53.77ID:KWNjZyFY0081デフォルトの名無しさん
2014/04/01(火) 19:45:25.44ID:28c8XDsv0082デフォルトの名無しさん
2014/04/01(火) 19:53:07.99ID:CqvqfScsとりあえずVC++ExpressEdition触ってみたらいいと思う
0083デフォルトの名無しさん
2014/04/01(火) 20:06:30.50ID:hppE64Hw0084デフォルトの名無しさん
2014/04/01(火) 20:27:34.83ID:PR3x9no5素で言っているのか
0085デフォルトの名無しさん
2014/04/01(火) 20:34:07.93ID:CqvqfScs初期プロジェクトで既にウィンドウ生成までできてるから
流れ見るのならいけるんじゃね?
関数はもちろん調べながら
0086デフォルトの名無しさん
2014/04/01(火) 20:53:33.69ID:eefQLiAyVCでGUIソフトとなるとMFC使えないExpressは苦行だろ
MFCじゃなくてQtなら良いが
0087デフォルトの名無しさん
2014/04/01(火) 20:58:12.28ID:eyBPHv5q0088デフォルトの名無しさん
2014/04/01(火) 21:00:40.54ID:zkzJISd4ステップインで見てみると、appmodul.cppというファイルに_tWinMain()があり、そこからさらに
winmain.cppというファイル内のAfxWinMain()が呼ばれているようでした。
いきなり理解するのは難しそうですが、おいおい見ていこうかと思います。
ところで>>82でVC++ExpressEditionを薦めていただきましたが、製品版とは何か違うのでしょうか?
今使っているのはDreamSparkで手に入れたVisualStudio2013を使っていますが、旧版やExpressEditionのダウンロードも可能です。
VisualStudio2013の情報はぐぐった限りまだ少ないので旧版を使った方がいいような気もしてます。
0089デフォルトの名無しさん
2014/04/01(火) 21:02:18.77ID:28c8XDsv0090デフォルトの名無しさん
2014/04/01(火) 21:03:43.90ID:28c8XDsv0091デフォルトの名無しさん
2014/04/01(火) 21:47:13.30ID:BTv6StGE0092デフォルトの名無しさん
2014/04/01(火) 22:13:30.10ID:q8+ciQV20093デフォルトの名無しさん
2014/04/01(火) 22:27:29.90ID:CqvqfScsVS2013触った事ないからわからんけど
フォームアプリケーションじゃなくてwin32アプリケーションがあればそれでソース見れるんじゃない?
> なんとなくでも全体の流れを把握したいのでmain()にあたる部分を見たい
こういう事かな ttp://msdn.microsoft.com/ja-jp/library/bb384843.aspx
0094デフォルトの名無しさん
2014/04/01(火) 23:04:38.46ID:JvY411BpATLの方が簡単だけどな。
0095デフォルトの名無しさん
2014/04/01(火) 23:46:31.78ID:q8+ciQV20096デフォルトの名無しさん
2014/04/02(水) 17:38:29.47ID:SfgYmxWg0097デフォルトの名無しさん
2014/04/02(水) 19:39:44.52ID:aNx9C+Mf0098片山博文MZジェバンニ ◆T6xkBnTXz7B0
2014/04/03(木) 12:52:10.02ID:lJqirrU90099デフォルトの名無しさん
2014/04/03(木) 15:33:05.57ID:BFyxuILc0100デフォルトの名無しさん
2014/04/04(金) 15:36:27.65ID:QN8rMztSググるとParallelクラスがあるけど、ネイティブでは使えないっぽい。
0101デフォルトの名無しさん
2014/04/04(金) 16:48:02.82ID:nM83ZP3Zparallel forみたいなことをしたい場合は、
自分で各スレッドのforの範囲を決めたり、
スレッドが終了するのを自分で待ったりする必要がある。
ネイティブで使えるパラレルライブラリはちゃんと入っているから探すべし。
0102デフォルトの名無しさん
2014/04/04(金) 19:59:43.18ID:ZtsQOPBg0103デフォルトの名無しさん
2014/04/04(金) 20:06:44.55ID:2QttofMo……OpenACCが使えるCompilerってフリーに無かったっけ?
0104デフォルトの名無しさん
2014/04/04(金) 20:41:28.03ID:DD5EG69pGUIフレームワークをわざわざ変える奴は
マトモな設計が出来ない奴
0105デフォルトの名無しさん
2014/04/04(金) 20:43:23.33ID:eu/rYsXw0106デフォルトの名無しさん
2014/04/04(金) 20:59:32.67ID:UDPO/kAP構築済みなのかも知れないのでもう少し語らせてみたいです。
0107デフォルトの名無しさん
2014/04/04(金) 23:36:48.04ID:QN8rMztSOpenMPとかPPLとかBoostとかいろいろあるんだな
調べてみるよありがとう
0108デフォルトの名無しさん
2014/04/05(土) 00:52:05.63ID:Z9uNYFZQw_char なら wprintf
TCHAR なら _tprintf
だと思うのですが、どうして三番目のやつは先頭に _ が付くのでしょうか?
0109デフォルトの名無しさん
2014/04/05(土) 00:56:55.10ID:JxLvhIna0110デフォルトの名無しさん
2014/04/05(土) 01:50:54.62ID:EG+AV0eK0111デフォルトの名無しさん
2014/04/05(土) 02:16:53.63ID:goifYp5bプログラマは、先頭に、_をつかわないようにします(おれは、そういわれた)
0112デフォルトの名無しさん
2014/04/05(土) 02:21:01.16ID:zHyV6h3a俺もC言語辞典(古い)でそれ見た
0113デフォルトの名無しさん
2014/04/05(土) 02:47:32.13ID:oiRFlfhhマルチスレッドを意識してプログラムしなくてもwindows8は賢いからある程度勝手に対応してくれるのか?
かといって全コアが100%に張り付くというわけでもなく、60%弱くらいでよくわからん。
これを回しただけなんだけど
for (int j = 0; j < 100000; j++){
for (int i = 0; i < 100000; i++){}
}
0114デフォルトの名無しさん
2014/04/05(土) 03:30:05.84ID:zHyV6h3a空ループって最適化したら消えるんじゃねーの?
それ以前に裏で別のプロセス走ってるとか
コンパイラの自動並列化が効いちゃったとかのオチな気がする
0115デフォルトの名無しさん
2014/04/05(土) 03:59:45.28ID:JxLvhIna1コアの100% =
2コアの50% =
4コアの25%
0116デフォルトの名無しさん
2014/04/05(土) 04:09:44.16ID:4p3tjfYN同一コアと思われるハイパースレッディングの
論理CPUペアが50%ずつ(たまに60+40の非対称)
になるのはWindowsでよくあること。
表示が間違ってるのではないかと思ってるけど
0117デフォルトの名無しさん
2014/04/05(土) 11:56:14.14ID:oiRFlfhhもっと詳しくならないとマルチコアとか考えるだけ無駄ってことか……
0118デフォルトの名無しさん
2014/04/05(土) 12:06:18.53ID:Vwyio/wCシングルスレッド・プログラムでも、OSがマルチコア使うかもしれないし
マルチスレッド・プログラムでも、OSが1コアしか使わないかもしれない。
プログラマが出来るのは主にスレッド管理だけ。
0119デフォルトの名無しさん
2014/04/05(土) 12:07:27.06ID:zHyV6h3ahttp://msdn.microsoft.com/ja-jp/library/hh872235.aspx
0120デフォルトの名無しさん
2014/04/05(土) 12:10:33.92ID:Vra9QIvI0121デフォルトの名無しさん
2014/04/05(土) 12:59:48.48ID:zqI4wR1v「マルチスレッドにすると勝手にコアごとに割り付けてくれる」ってのは正しい
正確には割り付けるんじゃなく、並列に実行される。
CPU使用率は、ツールやコマンドによって計算方法が違っている場合がある。
例えば4コアの場合、全CPUをフルで使った場合100%と表示するか、400%と表示するかはツール次第。
0122デフォルトの名無しさん
2014/04/05(土) 13:32:33.53ID:Gtcr4gqxhttp://ideone.com/Yr4XRf
0123片山博文MZジェバンニ ◆T6xkBnTXz7B0
2014/04/05(土) 13:35:36.03ID:pKk9GxNe型名の始めは大文字にしたほうがいいね。
0124デフォルトの名無しさん
2014/04/05(土) 13:38:16.05ID:Gtcr4gqxそうですね^^
型名以外には何か問題点とかありますか?
0125デフォルトの名無しさん
2014/04/05(土) 13:38:47.30ID:NnouwwX70126デフォルトの名無しさん
2014/04/05(土) 13:39:59.09ID:Gtcr4gqx具体的にはどのような?
0127デフォルトの名無しさん
2014/04/05(土) 13:42:36.52ID:30x58bFFはい
後何が必要なのか?
0128デフォルトの名無しさん
2014/04/05(土) 13:44:42.90ID:Gtcr4gqxポインタの扱いが苦手でして
一応コンパイラもエラー吐かなかったので大丈夫みたいですがなにぶん心配性なもんで・・・
0129デフォルトの名無しさん
2014/04/05(土) 13:50:24.60ID:/rC4NDRrで?
0130片山博文MZジェバンニ ◆T6xkBnTXz7B0
2014/04/05(土) 14:03:30.11ID:pKk9GxNe次のコード書いてみて。
0131デフォルトの名無しさん
2014/04/05(土) 15:18:00.60ID:N2+78ftB願望
0132デフォルトの名無しさん
2014/04/05(土) 15:21:03.39ID:zHyV6h3aそもそも構造体のメンバ変数が1つだけって……
動的確保してるのにその個数が定数値って……
例:http://codepad.org/l9spLfkF
0133デフォルトの名無しさん
2014/04/05(土) 15:22:25.93ID:zHyV6h3ahttp://codepad.org/3ZiOa4oN
0134デフォルトの名無しさん
2014/04/05(土) 15:23:25.39ID:JxLvhIna例だから別にいいだろ
0135デフォルトの名無しさん
2014/04/05(土) 15:53:12.52ID:Vra9QIvItypedef struct 〜 の書式で宣言するなら struct の後のタグ名は不要
おまじない気分でつけるものじゃない
何よりまず、obj001からobj002にコピーしている意味がわからない
この後 obj002を使おうとしていますというオチじゃないかと非常に気持ち悪い
0136デフォルトの名無しさん
2014/04/05(土) 15:55:30.71ID:Vra9QIvI○ライブラリとかで予め決まっている名前以外は 先頭に _ をつけるべきじゃない
0137デフォルトの名無しさん
2014/04/05(土) 15:55:38.93ID:PXTTIzjCいや、その点はどうでもいだろw
ポインタの勉強するときそういう代入してみるのってよくあることだろ。
0138デフォルトの名無しさん
2014/04/05(土) 16:15:50.31ID:JxLvhIna浸れてないけど
0139デフォルトの名無しさん
2014/04/05(土) 16:21:18.84ID:LokGB3M7○ライブラリとかで予め決まっている名前以外は 先頭に _ をつけるべきじゃない、というのが持論です
0140デフォルトの名無しさん
2014/04/05(土) 17:03:41.01ID:Vra9QIvIよし、今日のところは引き分けにしておいてやる
0141デフォルトの名無しさん
2014/04/05(土) 17:55:33.89ID:YrLzJmoN0142デフォルトの名無しさん
2014/04/05(土) 18:38:06.46ID:zqI4wR1vえ?なんで型名を大文字で始めるの
定数と間違えてない?
0143デフォルトの名無しさん
2014/04/05(土) 19:04:31.24ID:zHyV6h3a実用上はいちいちsqrtしないだろ?
……ごめんなさい忘れてただけです
0144片山博文MZジェバンニ ◆T6xkBnTXz7B0
2014/04/05(土) 19:22:03.80ID:kCbCwa1D例えばDogという型名とdogという変数名が衝突しないから、分かりやすいコードが書ける。
0145デフォルトの名無しさん
2014/04/05(土) 19:35:59.53ID:zqI4wR1vうん。そうです。自分が勘違いしていました・・・
0146デフォルトの名無しさん
2014/04/05(土) 22:27:29.57ID:pxBAHja5自分の使ってるルールがさも普遍的に良いものであるかのような
ミスリードをする奴の言うことなど真に受けてはいけない
0147デフォルトの名無しさん
2014/04/05(土) 22:45:29.81ID:JxLvhInaTCHAR tszBuff
int nCount
UINT unCount
typedef struct tagStructName{
} T_STRUCTNAME;
いろいろやってみて自分が納得行くの使ったらいいんや
0148デフォルトの名無しさん
2014/04/05(土) 23:56:57.72ID:d+kzfy0Rシステムハンガリアンさんちーす
まだ絶滅してなかったんすね!
頑張ってくださいね!
0149デフォルトの名無しさん
2014/04/06(日) 03:16:28.05ID:PoyortF4ルール以前に、文法で型名と集成体タグ名と変数名は衝突し得ないんじゃね?
http://ideone.com/srhSui
あと、typedefされた型名って_tってサフィックスつけるのが一般的だと思うんだけど
これもローカルなルールなんやろか
0150デフォルトの名無しさん
2014/04/06(日) 03:33:10.66ID:v5F7vKVcそのとおりだねえ
ISO/IEC 9899:1999 6.2.1p1
An identifier can denote an object; a function; a tag or a member of a structure, union, or
enumeration; a typedef name; a label name; a macro name; or a macro parameter.
集成体タグと typedef 名と変数は異なる名前空間だね
0151デフォルトの名無しさん
2014/04/06(日) 03:39:44.68ID:lcQBK2Mzhttp://en.wikipedia.org/wiki/Typedef
によると、POSIXでは _t サフィックスは typedef の名前にリザーブされていて、それゆえ
名前が衝突しないようにユーザが定義する typedef には _t を使わないほうがいいらしい
0152デフォルトの名無しさん
2014/04/06(日) 03:53:44.87ID:PoyortF4規約での確認、�dです
>>151
> Such type names are reserved by POSIX for future extensions and should generally be avoided for user defined types.
…マジっすか orz
0153デフォルトの名無しさん
2014/04/06(日) 04:43:31.25ID:7TI60JXf人が目で見て区別がつきやすいよう
同じ綴りを避けるって話だろうに
アスペなおまいらは
0154デフォルトの名無しさん
2014/04/06(日) 07:44:06.37ID:AUPUS+0I人の目で区別する必要があるシチュエーションってどんなの?
0155デフォルトの名無しさん
2014/04/06(日) 11:01:21.41ID:Gd53X1PXよほど糞な開発環境なんだなお前
0156デフォルトの名無しさん
2014/04/06(日) 11:52:04.47ID:gdJCg3c2処理系指定で組めばおk
初心者なんだろ、何か組みあがった快感って大事だぞ
0157デフォルトの名無しさん
2014/04/06(日) 12:09:44.18ID:BmjYK//+名前を使い回すなって当たり前のことだろ
どんだけ馬鹿なんだおまえら
0158デフォルトの名無しさん
2014/04/06(日) 12:18:02.39ID:PoyortF4_tサフィックスのことは、下にも書かれてたよorz
ttp://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html#tag_15_02_02
0159デフォルトの名無しさん
2014/04/06(日) 13:36:30.63ID:9b0FkJFr本当にWikiは嘘だらけだな
byだと適用範囲がPOSIXでなくC全般と読めてしまう
0160デフォルトの名無しさん
2014/04/06(日) 15:47:59.42ID:PoyortF40161デフォルトの名無しさん
2014/04/06(日) 16:35:16.36ID:5rOAt6qXWikiなんだから編集できるんじゃねーの?
0162デフォルトの名無しさん
2014/04/06(日) 16:39:48.19ID:Pw+vYT2xB「間違ってるねそれ。
やっぱりWikipediaはこらだから
A「直せるんだから直せよ
B「えっ、何で俺が?
A「えっ?
0163デフォルトの名無しさん
2014/04/06(日) 16:46:07.08ID:YqB/fCSo0164デフォルトの名無しさん
2014/04/06(日) 16:56:24.24ID:k991ba7oB「byの方がいいだろ
せめて意見するときは
そう考える根拠ぐらい書きたいものだ
0165デフォルトの名無しさん
2014/04/06(日) 16:57:56.33ID:PoyortF4Wiki編集するところだったよorz
0166デフォルトの名無しさん
2014/04/06(日) 19:15:29.97ID:X8q2hYwd0167デフォルトの名無しさん
2014/04/06(日) 19:22:56.79ID:714kpsax→
POSIXによって予約されているため
ユーザー定義型での使用は避けるべきである
POSIX準拠システムでのアプリケーションプログラムを超えて
POSIXと関係ないオペレーティングシステムのアプリケーションにまで言及しとりますがな
0168デフォルトの名無しさん
2014/04/06(日) 19:41:42.06ID:YqB/fCSoお前は移植性の事全く考えないの?
POSIXでないシステムの方が圧倒的に少ないというのに
0169デフォルトの名無しさん
2014/04/06(日) 19:47:23.97ID:X8q2hYwd0170デフォルトの名無しさん
2014/04/06(日) 19:54:26.32ID:PoyortF4"by ISO/IEC"でなく"by POSIX"という時点でお察し(ry
0171デフォルトの名無しさん
2014/04/06(日) 19:56:17.95ID:k991ba7oCのtypedefの説明に「_tはPOSIXで予約済」
って書いてあったら
POSIX系以外も従う必用性がある
ように読めるだろ。
>避けるべきということに変わりはないだろ
それは書いた人の主観であって
百科事典の説明に書くべきじゃないぞ。
技術文書書いたこと無いの?
0172デフォルトの名無しさん
2014/04/06(日) 19:58:14.20ID:k991ba7oという表現にすれば問題なくなると思うのだが
0173デフォルトの名無しさん
2014/04/06(日) 19:59:31.29ID:14wt57iaいっぱいあるんだな……
0174デフォルトの名無しさん
2014/04/06(日) 20:13:54.33ID:IsEOtgMD0175デフォルトの名無しさん
2014/04/06(日) 20:16:44.81ID:YqB/fCSo読めないよ
俺C言語で新しいOS書いたわー
そのOSでは大文字で始まる型名予約してるから使うなよ!って書いて、誰がC言語全般に影響あると思うんだ?
0176デフォルトの名無しさん
2014/04/06(日) 20:22:32.03ID:YqB/fCSoPOSIXが何かわかってない奴は(圧倒的多数であるPOSIXシステムで動かされる可能性を考慮して)無条件に従っておいた方がいい
なんの問題もない。
0177デフォルトの名無しさん
2014/04/06(日) 20:22:37.76ID:ZIQhn8PO0178デフォルトの名無しさん
2014/04/06(日) 20:24:58.76ID:X8q2hYwd> なんでこんなに揉めるんだ?
単なるしきたりを
> POSIX系以外も従う必用性がある
> ように読めるだろ。
なんて言うアホがいるからだろ。
0179デフォルトの名無しさん
2014/04/06(日) 20:29:09.78ID:k991ba7o説明の文面が妥当かどうかの話をするときに
どうしてシキタリが出てくるんだよアホですか?
0180デフォルトの名無しさん
2014/04/06(日) 20:30:38.36ID:8z3KlCR70181デフォルトの名無しさん
2014/04/06(日) 20:34:13.86ID:X8q2hYwd0182デフォルトの名無しさん
2014/04/06(日) 20:36:21.69ID:PoyortF4>>174
型名(type name)のtらしい…俺はtypedefのtって思い込んでたけど
ttp://stackoverflow.com/questions/231760/what-does-a-type-followed-by-t-underscore-t-represent
0183デフォルトの名無しさん
2014/04/06(日) 20:44:57.82ID:k991ba7o「Cのsize_t(しきたりでtypedefには_tを付けたもの)は
POSIXによって予約されている」
などと言っている出鱈目なWikipediaの説明が
妥当だと思うアホはすっこんでろ
0184デフォルトの名無しさん
2014/04/06(日) 20:57:23.37ID:6fUxN2Jx0185デフォルトの名無しさん
2014/04/06(日) 20:57:26.93ID:X8q2hYwd誰が妥当って言ってるんだ?
俺は単にそう書いてると言ってるだけだぞ。
まあ、しきたりで自爆したからごまかしたいんだろうけど (w
0186デフォルトの名無しさん
2014/04/06(日) 21:05:47.20ID:frwmbROrQz
STL
ヘッダ
POSIX ←new
片山
hoge
0187デフォルトの名無しさん
2014/04/06(日) 21:23:14.93ID:YqB/fCSo0188デフォルトの名無しさん
2014/04/06(日) 21:28:22.80ID:5rOAt6qXえ、いつの間にかSTLとヘッダもアウトになってたのかw
ここは酷いインターネッツですね
0189デフォルトの名無しさん
2014/04/06(日) 21:39:32.30ID:uqLF0x8Hついでに
スレが荒れるのでCやC++に関することはすべて厳禁
0190デフォルトの名無しさん
2014/04/06(日) 21:52:35.54ID:EzHv0eI8ようは2ちゃんねるの禁止が落としどころだよね
0191デフォルトの名無しさん
2014/04/06(日) 22:19:16.09ID:2m7iHXEE出先で書き込めなくてもどかしいったらありゃしない
0192デフォルトの名無しさん
2014/04/06(日) 22:35:34.44ID:yUhKfMaZ●が無いとスレ立てできない
0193デフォルトの名無しさん
2014/04/06(日) 23:14:43.66ID:2m7iHXEE買う気ないからひろゆきの新しい方に期待するわ
0194デフォルトの名無しさん
2014/04/07(月) 01:28:14.02ID:AB68SSs6http://stackoverflow.com/questions/8699069/difference-between-two-systemtime-variable
の回答4にある
SYSTEMTIME operator-(const SYSTEMTIME& pSr,const SYSTEMTIME& pSl)
をそのまま使って、
SYSTEMTIME ts,te,tdif;
GetSystemTime(&ts);
Sleep(1000);
GetSystemTime(&te);
tdif = te - ts;
としたら、最後の引き算の行で、
エラー 1 error C2676: 二項演算子 '-' : 'SYSTEMTIME' は、この演算子または定義済の演算子に適切な型への変換の定義を行いません。(新しい動作; ヘルプを参照)
と出るのですが、解決方法がわかりません。どうしたらよいでしょうか?
0195デフォルトの名無しさん
2014/04/07(月) 02:54:37.57ID:LXdO3Nocteのアドレス - tsのアドレスをtdifに入れるというおかしな事してる
0196デフォルトの名無しさん
2014/04/07(月) 04:02:36.25ID:Yfheg34zoperator-()の定義かプロトタイプ宣言を
WinMain()だかtmain()だかの前でやれば解決する、と予想
0197デフォルトの名無しさん
2014/04/07(月) 04:21:05.28ID:AB68SSs6アドバイスありがとうございました。
>>196
その通りでした。プロトタイプ宣言忘れていました。
無事に動いたのですが、実行結果がおかしいのです。
約1秒の差が計測できると思ったのですが、
tdifの中身を見ると、
wYear 1601 unsigned short
wMonth 1 unsigned short
wDayOfWeek 1 unsigned short
wDay 1 unsigned short
wHour 0 unsigned short
wMinute 0 unsigned short
wSecond 1 unsigned short
wMilliseconds 515 unsigned short
となっていますので
1601年1月1日0時間0分1.515秒
の差ということでしょうか?どういうことでしょうか?
0198デフォルトの名無しさん
2014/04/07(月) 04:29:51.17ID:Yfheg34zttp://msdn.microsoft.com/ja-jp/library/x3399a54.aspx
0199デフォルトの名無しさん
2014/04/07(月) 06:08:42.83ID:NjqqbTFISYSTEMTIME ってカレンダーの年月日時間みたいなもの。
それらの引き算をカレンダーの年月日時間にするってへんだろ。
結果のカレンダー年月日時間は0年0月0日0時0分1.515秒ですって、カレンダーではありえないだろ
期待する結果は年月日時間で表せる差じゃないか(1年2ヶ月3時間4分5秒違うとか)
0200デフォルトの名無しさん
2014/04/07(月) 11:35:54.05ID:uM+gajuNSYSTEMTIMEの起点は1601年1月1日0時0分0秒
つまり、ゼロをSYSTEMTIMEとして解釈すると「1601/01/01 0:00:00」になる
0201デフォルトの名無しさん
2014/04/07(月) 13:13:30.33ID:8ZhLD5KA0202片山博文MZジェバンニ ◆T6xkBnTXz7B0
2014/04/07(月) 14:25:12.80ID:nfj7XknsULARGE_INTEGERを使って64ビット整数に変換して、引き算をする。
0203デフォルトの名無しさん
2014/04/07(月) 15:40:44.16ID:4PSeJxmH0204デフォルトの名無しさん
2014/04/07(月) 18:59:37.11ID:iQnUI2e5194がやっているのがまさにそれなんだけど、問題は戻り値の型が時間間隔ではなく
時刻を表す型になっていることだから、
>>194 の operator-() の戻り値を __int64 にして v_res=v_right-v_left; 以下を
return v_res; に変えれば100ナノ秒単位の経過時間が得られるようになる。
100ナノ秒じゃ細かすぎるというなら、戻り値を double にして return v_res / 10000.0;
に変えるとか工夫しろ。
0205デフォルトの名無しさん
2014/04/07(月) 19:23:33.56ID:BajMmze5時間差(経過時間)を秒単位ではなくて、年月..秒で表すものにしたいから、
SYSTEMTIMEを戻り型にしているんじゃないのか
Winで経過時間を求めるのにSYSYEMTIMEを使うって普通なのか?
違うなら何を使うのが多い?
0206デフォルトの名無しさん
2014/04/07(月) 19:29:45.40ID:4vTqmZSqWin依存でいいならtimeGetTimeとかQueryPerformanceCounterとかがあるし
0207デフォルトの名無しさん
2014/04/07(月) 20:26:10.88ID:Y4utMABqという要求下で "年" の計算にうるう年の考慮は必要だろうか?
0208デフォルトの名無しさん
2014/04/07(月) 20:35:46.78ID:4vTqmZSqその辺難しいよね
365日とするか365.2425日とするか365.2422日とするか……
表示を日までに済ませておくのが無難かと
0209デフォルトの名無しさん
2014/04/07(月) 21:01:58.18ID:iQnUI2e5.NETのTimeSpanクラスはそうなってるね。
内部表現は100ナノ秒刻みの整数値で、ミリ秒、秒、分、時間、日への変換はするが
月、年への変換はしない。
0210デフォルトの名無しさん
2014/04/07(月) 21:27:01.61ID:dmj0DO96それ以前に月が 30日でいいのかと...
0211デフォルトの名無しさん
2014/04/07(月) 21:32:53.82ID:Y4utMABqあああああーーーーー
考えるほどマンドクサイっすな
0212デフォルトの名無しさん
2014/04/07(月) 21:49:28.54ID:wQYu7k63なんでQZが筆頭なんだ?
0213デフォルトの名無しさん
2014/04/07(月) 21:52:25.42ID:pviM0T4Q0214デフォルトの名無しさん
2014/04/07(月) 22:31:32.85ID:tNhu6rzw0215デフォルトの名無しさん
2014/04/07(月) 22:33:46.15ID:4vTqmZSqswitch構文のcase内で変数宣言したら、それについて
「'変数' の初期化が 'case' ラベルによって行われませんでした。」
って言われたんだけどどういうことなの……?
ついでにswitch部分に赤波線が付いて、「制御の転送は次の初期化をバイパスします」
って言われたんだけど何故エラーになるのか意味が分からない。誰か分かる人教えて下さい
(VS2013でコンパイルしている時に発生)
0216デフォルトの名無しさん
2014/04/07(月) 22:35:47.03ID:2mFu56Lzブロックをつければいい
0217デフォルトの名無しさん
2014/04/07(月) 22:40:02.07ID:Y4utMABqcase A:
{ // ローカルスコープにしちまう
int a;
} break;
case B:
…
default:
…
}
0218デフォルトの名無しさん
2014/04/07(月) 22:41:30.01ID:4vTqmZSqブロックを付けるって、要するに
case test:
〜
break;
を
case test:{
〜
break;
}
にするってことでいいの?
0219デフォルトの名無しさん
2014/04/07(月) 22:47:22.50ID:2mFu56Lz0220デフォルトの名無しさん
2014/04/07(月) 23:30:25.89ID:H5+AU72d0221デフォルトの名無しさん
2014/04/08(火) 00:20:22.54ID:lvT6VRY6testにおけるのは何?
int a,b,c;
...
switch()
case (b=a+1, c++, C): なんてのでもOK(試してないけど)?
0222デフォルトの名無しさん
2014/04/08(火) 00:23:17.09ID:lXmRpq/E試せ
0223デフォルトの名無しさん
2014/04/08(火) 00:32:19.53ID:zX8m8achラベルだけだよ
0224デフォルトの名無しさん
2014/04/08(火) 00:32:44.67ID:4GqgTU2E定数の整数式とscoped enumの値だけ
switch (a) case std::integral_constant<int, 6>::value:;
0225デフォルトの名無しさん
2014/04/08(火) 13:44:22.59ID:J+Ne3rG0すんげーむずむずするんだが
0226デフォルトの名無しさん
2014/04/08(火) 14:02:26.18ID:M2I5N33k在日のおまえは知らないだろうが、明治時代からある用法だぞ。
0227デフォルトの名無しさん
2014/04/08(火) 16:39:02.94ID:9nnVwB+Q(正直鬼物語で見たのが最初だなんて言えない)
0228デフォルトの名無しさん
2014/04/08(火) 17:27:19.75ID:DhHmBmSp0229デフォルトの名無しさん
2014/04/08(火) 18:01:46.09ID:Agmut9XT(ry なんかはときどき見るな
閉じていない括弧に違和感を持つのはある意味プログラマらしいか
0230デフォルトの名無しさん
2014/04/08(火) 18:31:11.83ID:Bi2RyCEo0231デフォルトの名無しさん
2014/04/08(火) 18:50:35.55ID:C0aY6nOj0232デフォルトの名無しさん
2014/04/08(火) 19:05:43.04ID:Ge61TJlRgoto 2;
goto 1+1;
goto 2*1;
各環境でナニがドコまで許されるのか興味はあるな
0233デフォルトの名無しさん
2014/04/08(火) 22:58:16.49ID:5xZMJR+Xプログラマは、半開区間が大好きさ!
[0, 4)
0234デフォルトの名無しさん
2014/04/08(火) 23:04:52.46ID:9wIzdaazワロタ
0235デフォルトの名無しさん
2014/04/09(水) 00:10:02.38ID:dDyddEcZ0236デフォルトの名無しさん
2014/04/09(水) 04:45:08.14ID:GDCkrjSs0237デフォルトの名無しさん
2014/04/09(水) 13:15:17.74ID:/wyRfLaCUN*XやるまえにDOSでTeXやってたからあれは意外になんとも
かつては汗でパーサ書いてたっていうから、まあそういうことなら。
0238デフォルトの名無しさん
2014/04/13(日) 08:17:37.43ID:7/oWURrRlong型で格納するとなると、68年くらいで限界が来ませんか?
2038年くらいにいろんなプログラムやばいっすか?
0239デフォルトの名無しさん
2014/04/13(日) 08:24:54.58ID:2iqAA/H60240デフォルトの名無しさん
2014/04/13(日) 08:30:51.23ID:7/oWURrRでも今からプログラムつくろうとするとtime_tは64bitで定義されてるっぽいですね
3000億年まで安心か
0241デフォルトの名無しさん
2014/04/13(日) 09:06:00.54ID:olete8aZ0242デフォルトの名無しさん
2014/04/13(日) 09:33:49.42ID:m7xM1FWF0243デフォルトの名無しさん
2014/04/13(日) 15:21:37.00ID:qnyX9I3J既に3分の1消化してるんだな
0244デフォルトの名無しさん
2014/04/13(日) 18:18:53.37ID:CtgsENNt0245デフォルトの名無しさん
2014/04/13(日) 18:50:58.03ID:Am7dEU9n0246デフォルトの名無しさん
2014/04/13(日) 18:52:32.07ID:P3Ox4abS0247デフォルトの名無しさん
2014/04/13(日) 18:55:12.72ID:N2UMgO6H0248デフォルトの名無しさん
2014/04/14(月) 07:18:41.20ID:CAt5QB21同じソースでlongが32bitになったり64bitになったりする方が混乱するわ
昔intが16bitになったり32bitになったりで難儀した
0249デフォルトの名無しさん
2014/04/14(月) 08:17:35.70ID:XwQYiHbH0250デフォルトの名無しさん
2014/04/14(月) 08:28:42.62ID:iMQET/gaつstdint.h(cstdint)
規格仕様上複数マシンで動作できることを重視したから型ごとの制約が緩いのよね
と言うか既出の話題だったわw
http://toro.2ch.net/test/read.cgi/tech/1393539884/61-69
0251デフォルトの名無しさん
2014/04/14(月) 11:00:15.74ID:fXV0vjOD#include <iostream>
#include <vector>
class c_myclass
{
public:
void myfunc(int num)
{
std::cout << "myfunc" << num << " が呼び出されました \n";
}
};
int main()
{
c_myclass temp;
std::vector<c_myclass> vec;
for(int i=0; i<10; ++i)
vec.push_back(temp);
for(int i=0; i<vec.size(); ++i)
vec[i].myfunc(i);
return 0;
}
このような感じでよろしいでしょうか?
ちなみに
サイズを指定する場合は
std::vector<c_myclass> vec(10);でしょうか?
0252デフォルトの名無しさん
2014/04/14(月) 11:15:14.08ID:Kn6UHMuGしいて言えば
vec.push_back(temp);
より
vec.emplace_back();
の方がよろしいかと思われます
0253デフォルトの名無しさん
2014/04/14(月) 11:22:23.22ID:fXV0vjODありがとうございます
もしよろしければemplace_back()について解説お願いします
リファレンスを見てもよくわからなかったので
0254デフォルトの名無しさん
2014/04/14(月) 11:23:47.56ID:Kn6UHMuGコピーが発生しないので多少効率的になります
0255デフォルトの名無しさん
2014/04/14(月) 11:25:50.80ID:fXV0vjODなるほど
0256KUSO KOTE ◆unko./w.Osri
2014/04/14(月) 12:36:29.24ID:8ev4IZFyもしc_myclassにc_myclass(bool,double)みたいなコンストラクターがあったら、
emplace_back(true,1.23)とすることが出来て
かつvectorの中の格納領域上に直接c_myclassを作成できる。
と思う(想像)。
0257デフォルトの名無しさん
2014/04/14(月) 15:28:45.80ID:MAoTOR9V0258デフォルトの名無しさん
2014/04/14(月) 16:17:06.14ID:/qNJTuFi0259デフォルトの名無しさん
2014/04/14(月) 16:37:16.17ID:oIWmwaCC0260デフォルトの名無しさん
2014/04/14(月) 17:29:53.33ID:aQsMBHRD4095 :名無しさん@13周年 :2014/04/14(月) 04:46:02.73 ID:wJLzpOd2P(4)
jimがさくらのクローラを遮断したみたいだな
迂回しても迂回→遮断のイタチごっこは目に見えてるので遮断できない方法でdatを引っこ抜くまでだ
具体的には専ブラっぽい挙動でnetからdat引っこ抜いてscに投げるスクリプト書いてやるからお前らそれブン回せ
たらこにはリクエスト+受け取り+改ざんチェック用のスクリプト書いてやるよ
あー久しぶりにemacs起動するわ
3時間で書いてやる
4209 :名無しさん@13周年 :2014/04/14(月) 09:22:21.15 ID:wJLzpOd2P(4)
あとちょっと書き足してバグとったらexeで配るよ
さしあたりdatの回収は俺がやっとく
C++で書きなおして独自の難読化施してるからnetの奴らにREできるかな?マカフィーでも無理なんじゃないかな
4210 :名無しさん@13周年 :2014/04/14(月) 09:24:13.59 ID:wJLzpOd2P(4)
今の時点で一つ言えるとしたら不特定多数を舐めるなってこと
あー久しぶりにemacs起動するわ()
3時間で書いてやる()
C++で書きなおして独自の難読化施してるからnetの奴らにREできるかな?マカフィーでも無理なんじゃないかな()
不特定多数を舐めるなってこと()
0261デフォルトの名無しさん
2014/04/14(月) 18:01:44.00ID:0/p4fR0J0262デフォルトの名無しさん
2014/04/14(月) 19:15:32.34ID:yacO1o/Cできるでしょ?readdir(3C)とかは内部ではreadを呼んでる
0263デフォルトの名無しさん
2014/04/14(月) 20:02:57.67ID:g31zNjzuread(2) の manには
EISDIR fd refers to a directory.
Other errors may occur, depending on the object connected to fd.
POSIX allows a read() that is interrupted after reading some data to
return -1 (with errno set to EINTR) or to return the number of bytes
とある
0264デフォルトの名無しさん
2014/04/14(月) 20:41:55.55ID:DVvt3Ia1C++には参照渡しという記述方法があることを知ったのですが、Cのポインタ渡しに
慣れている私としては、参照渡しを使わずにすべてポインタ渡しでコードを記述する
ほうが見易いので、そうしようかと思うのですが、何かデメリットありますか?
参照渡しを使うほうがよい点などありましたら教えてください。
0265デフォルトの名無しさん
2014/04/14(月) 20:51:36.33ID:UPYb5gKrポインタで渡す=ヌルが渡ってくる可能性がある、つまり、常にヌルチェックが必要
ポインタで渡す=ヌルが渡せる、この引数はオプション的である
参照で渡す=なんかしらわたってくる、ヌルチェック不要
参照で渡す=この引数は必ず必要である
あと一時変数オブジェクトの寿命の関係とかあった気がするが忘れたw
0266デフォルトの名無しさん
2014/04/14(月) 21:14:47.05ID:iMQET/gaポインタ渡しと違い、参照渡しの場合、
・絶対に実体があるので、適当なアドレスが渡って
不正なメモリアクセスを行うことがない
また、参照する中身は変更できないので紛れがない
・普通の変数と同じように記述できる。構造体のメンバ関数にも
アロー演算子ではなくドット演算子でアクセスできる
また、関数の引数に使った際、呼び出す側としてはいちいち
アドレスを渡すということを意識せず使用できる
・ポインタと違い参照自体にはメモリ消費がない
こんなところか
0267デフォルトの名無しさん
2014/04/14(月) 21:17:29.88ID:lcY87dee参照渡しの一番のメリットは渡したオブジェクトの所有権が移動しない事がわかる事かな。
0268デフォルトの名無しさん
2014/04/14(月) 21:21:57.27ID:lEZQ3TFlインラインで消えたりするが
0269デフォルトの名無しさん
2014/04/14(月) 21:46:00.21ID:iMQET/gaいや、俺の持ってる本では
「ポインタと違って独自にメモリ領域が割り当てられない」
的なことが書いてあるんだが……違うの?
0270デフォルトの名無しさん
2014/04/14(月) 21:49:58.13ID:7APDnn3f0271デフォルトの名無しさん
2014/04/14(月) 21:55:35.64ID:buURFUek参照も内部的にはポインタ動作と変わらないかと。
0272デフォルトの名無しさん
2014/04/14(月) 22:00:06.15ID:iMQET/gaそれって「参照がポインタで実装されてる(ことが多い)」って話じゃなかった?
0273264
2014/04/14(月) 22:02:44.39ID:DVvt3Ia1大変参考になります。
>参照渡しの一番のメリットは渡したオブジェクトの所有権が移動しない事がわかる事かな。
もう少し詳しく解説お願いします。
0274デフォルトの名無しさん
2014/04/14(月) 22:04:37.96ID:iMQET/gahttp://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1320144958
http://www.osak.jp/program/arg_ref_val.html
0275デフォルトの名無しさん
2014/04/14(月) 22:18:22.93ID:msrdBAHC通常の実装では、呼び出し側ではスタックにアドレスを積むという点で全く同じだし、
呼ばれる側でもそこを参照するのに違いはないよ。
まぁ、インライン展開で消えれば話は別だけど。
一番のメリットは、(参照先ではなく)参照自体を書きかえられないことだね。
それもまた、ポインタでもconstにすればできるわけだけど。
0276デフォルトの名無しさん
2014/04/14(月) 22:54:29.26ID:CAt5QB21この例ではポインタで渡す気が起きない
0277デフォルトの名無しさん
2014/04/14(月) 23:06:35.99ID:lcY87deeconst付けような。
0278264
2014/04/14(月) 23:14:28.51ID:DVvt3Ia1サンプルコードありがとうございます。
>この例ではポインタで渡す気が起きない
すみません、まだよく分らないのですが、ポインタで
void WriteLine(const string *pstr)
{
printf("%s\n", pstr->c_str());
}
のようにすると何か問題があるのでしょうか?
0279デフォルトの名無しさん
2014/04/14(月) 23:17:14.74ID:lcY87dee参照にするとこうかける
0280デフォルトの名無しさん
2014/04/14(月) 23:20:11.44ID:i+D5B13r++や--の挙動がポインタと参照で違うんじゃね?
0281デフォルトの名無しさん
2014/04/14(月) 23:32:46.57ID:lcY87deeポインタでオブジェクト返されると誰がdeleteすべきなのかドキュメント見るか返す関数の中身見るまでわからないよね?
参照にすると返したやつが所有している物の中身を見させて貰ってるってことがわかるからdeleteしなくていいって事がドキュメント見なくてもわかる。
引数でもポインタだと引数で渡されたポインタを内部で保持しておくから呼び出し側でdeleteや中身の変更をしてはだめになるのかとかわからない。
0282デフォルトの名無しさん
2014/04/14(月) 23:41:59.74ID:CAt5QB21ttp://codepad.org/uAzCCBJQ
ポインタでも書けるしこの例では問題はない
が、やっぱり人に見せると「何で参照使わないの?」と言われそう
0283デフォルトの名無しさん
2014/04/14(月) 23:54:52.78ID:73GA0vhp....
delte str;
....
WriteLine(str); //deleteしてるけど、、、ポインタ値は生きてるから アッー
結局、コンテナをうまく使って生ポ(生new)は極力排除しようぜって流れ
0284デフォルトの名無しさん
2014/04/14(月) 23:59:10.65ID:lcY87deeなんで「何で参照使わないの?」と言われるのかその理由を書かないと意味ないだろ。
たとえば
http://codepad.org/wCMxFlfO
文字列を返す関数と文字列を引数にとる関数があるとする。
参照だったら文字列を返す関数を文字列を引数にとる関数の引数に直接書ける
ポインタだったら一度ローカル変数で受け取ってそのポインタを書かないとだめ
0285デフォルトの名無しさん
2014/04/15(火) 00:13:55.46ID:MOmoi8a1a = 0;
0286デフォルトの名無しさん
2014/04/15(火) 00:17:57.06ID:lShoPitpnull許可を表現させたいわけでもなく
読み取り用途限定の時に
わざわざポインターを使う方が不自然
0287デフォルトの名無しさん
2014/04/15(火) 00:21:36.20ID:jMxUSFKT一行目がダメコードって一目瞭然じゃないか。
ポインタだったらnullを渡すのが悪いのか?nullチェックせずに代入するほうが悪いのか?になる
>>286
ポインタしかない世界から来た人には多分通じないよ。
0288デフォルトの名無しさん
2014/04/15(火) 00:25:16.54ID:hh7KqCRP0289264
2014/04/15(火) 00:28:56.87ID:7FIahpja参照渡しをするのは、
void WriteLine(const string &str);
みたいに、その関数に値を読み取り限定で渡す場合に主に使う。
ただし、必ずconstを付けておく。
上記以外はポインタ渡しを使う。
で良いでしょうか?
0290デフォルトの名無しさん
2014/04/15(火) 00:35:43.12ID:8L+RgIaL使い方が分からないのがあえて使わなくていい。
0291デフォルトの名無しさん
2014/04/15(火) 00:36:31.44ID:c0zlhsuSいいえ。
その他にもムーブセマンティクスを達成
したいときにも参照を使います。
0292デフォルトの名無しさん
2014/04/15(火) 00:45:18.87ID:jMxUSFKT0293デフォルトの名無しさん
2014/04/15(火) 01:27:44.04ID:PjplhgrG0294デフォルトの名無しさん
2014/04/15(火) 03:06:53.30ID:2JpOUwgl漏れも俺様ルールで、const参照は読み取り用、
ポインタは値を変更する時と、使い分けている
0295デフォルトの名無しさん
2014/04/15(火) 06:05:04.19ID:sGkhMKKattp://ideone.com/SIOYc5
なかなかいい例が思い浮かばないが
この例ではconstを付けられないが参照が相応しいと思う
全てに当てはまる使い分けの条件は提示できないので
個人やチームの判断で使い分けするしか
0296デフォルトの名無しさん
2014/04/15(火) 07:52:53.60ID:AA0ZYDWwvoid readSome(Type * const result)
{
// ++result; // これがエラーになってくれる。
}
0297デフォルトの名無しさん
2014/04/15(火) 08:09:35.12ID:6lm4j3zL意味的にはそうなのだけれど
C++のconstは真面目に付けると可読性を著しく損なう
0298デフォルトの名無しさん
2014/04/15(火) 08:59:58.71ID:Byz6doxpうん。262は間違いでした。
調べたらreaddirはgetdents(2)を呼んでた
そりゃそうか。ファイルシステムで構造違うしな
0299デフォルトの名無しさん
2014/04/15(火) 10:42:12.48ID:ZiuccpsXそのレベルは冗長
0300デフォルトの名無しさん
2014/04/15(火) 12:47:22.14ID:tCJ2yelK0301デフォルトの名無しさん
2014/04/15(火) 12:54:41.51ID:dDf7e/l1void f(const int x) なんてしないでしょ
0302デフォルトの名無しさん
2014/04/15(火) 13:09:58.76ID:tCJ2yelK0303KAC
2014/04/15(火) 13:26:56.79ID:OYr23JgAなんか違う事書いてるぞ。>289の仕様満たすならconstは*の左。
>>297
どんな所で可読性が落ちるって?
お前がまともに使えないだけじゃないの?
0304デフォルトの名無しさん
2014/04/15(火) 14:19:33.38ID:SFbbbO6x>>251の
c_myclassがインターフェースクラスを継承している場合は
継承元メンバ(インターフェースクラス)に仮想デストラクタを書いておけば良いのですか?
0305デフォルトの名無しさん
2014/04/15(火) 14:41:39.21ID:tCJ2yelK>296が言いたいことは、>289の仕様ならconst * string const strだろ。
0306デフォルトの名無しさん
2014/04/15(火) 14:42:44.92ID:tCJ2yelKstring const * const strね。
0307デフォルトの名無しさん
2014/04/15(火) 14:59:38.52ID:JmWJ8ekL違いが分かればよいのだが…
http://ideone.com/w9UqT0
0308デフォルトの名無しさん
2014/04/15(火) 15:09:29.49ID:SFbbbO6xさらっと確認したので怪しいのですがたぶん
クラスAには仮想デストラクタが無い為に
newしたオブジェクトがデリートされる際、継承元のデストラクタが呼び出されていませんが、
クラスBは仮想デストラクタがメンバにあるので
deleteされる際に継承元のデストラクタが呼び出される訳ですよね
そこで、ベクターにオブジェクトを格納する話につながる訳ですが
>>251のc_myclassがインターフェースクラスを継承しているときには
やはり継承元のクラスに仮想デストラクタを記述しておかないと危険だという事ですよね?
0309デフォルトの名無しさん
2014/04/15(火) 15:27:23.32ID:JmWJ8ekL0310デフォルトの名無しさん
2014/04/15(火) 15:32:30.40ID:SFbbbO6xまとめると>>307のdlvBを
dlvB temp
std::vector<dlvB> obj;
obj.push_back(temp);
みたいにしちゃっておkってことですよね
0311デフォルトの名無しさん
2014/04/15(火) 18:05:27.38ID:ef3kTbvBそうしたいなら仮想デストラクタとか仮想関数とか関係ない。
コピーコンストラクタを作ればいいだけ。
0312デフォルトの名無しさん
2014/04/15(火) 18:37:17.89ID:u428dFct多態をコンテナ内で実現したいならstd::shared_ptrやunique_ptrを入れるのがよい
0313デフォルトの名無しさん
2014/04/15(火) 20:01:11.81ID:Nbqron3Bvectorに突っ込むケースを考えると
難易度としては
vetcor<Base>
vetcor<Base*>
vetcor<shared_ptr<Base>>
ptr_vector<Base>
こんな感じじゃね?
それぞれ注意点はあるが
一見簡単そうに見える
vetcor<Base>
が一番きつい
0314デフォルトの名無しさん
2014/04/15(火) 20:12:18.40ID:MU2KfTCaそもそも派生クラスを突っ込めない。
>vetcor<Base*>
所有権がどこにあるのか分からないので論外。
>vetcor<shared_ptr<Base>>
virtualデストラクタ不要で便利。
>ptr_vector<Base>
今更ptr_vector?unique_ptrでいい。
0315デフォルトの名無しさん
2014/04/15(火) 20:33:50.00ID:O7xBtcGx0316デフォルトの名無しさん
2014/04/15(火) 20:42:49.07ID:Nbqron3Bたしかに
デザパタで
知らんかった
流行り廃りとかあるの?デザパタで
0317デフォルトの名無しさん
2014/04/15(火) 20:49:25.61ID:aOtL598m0318デフォルトの名無しさん
2014/04/15(火) 20:54:50.82ID:tBkVUf7m0319デフォルトの名無しさん
2014/04/15(火) 23:53:29.68ID:hh7KqCRP0320デフォルトの名無しさん
2014/04/15(火) 23:56:04.64ID:of9IS0B80321デフォルトの名無しさん
2014/04/16(水) 00:00:41.11ID:cUKcFdx2すまん、そうだね、copyかmoveが出来ないとコンテナには入れられないということで
0322デフォルトの名無しさん
2014/04/16(水) 00:40:07.75ID:UZj3cAYP0323デフォルトの名無しさん
2014/04/16(水) 01:04:51.10ID:RlYL1+PT>copyかmoveが出来ないとコンテナには入れられない
ソースは?
vectorについてはその通りだとは思うが
0324デフォルトの名無しさん
2014/04/16(水) 01:55:04.23ID:cUKcFdx2悪いけど、規格の該当箇所探すのメンドいから↓読んでみて
http://faithandbrave.hateblo.jp/entry/20120418/1334731512
0325323
2014/04/16(水) 06:52:53.53ID:gRD8q33D23.3.5p2でstd::listは23.2の仕様に従うとなっていて
そこで説明されるemplace_frontはEmplaceConstructibleであることが要求されていて
26.2.1p13のEmplaceConstructibleの定義は
コピー/ムーブを要求していないと読んだのだけれど
0326デフォルトの名無しさん
2014/04/16(水) 08:18:00.83ID:ySVTxJz40327デフォルトの名無しさん
2014/04/16(水) 09:04:15.08ID:AatfYxHXジジイがしょうわ
0328デフォルトの名無しさん
2014/04/16(水) 09:05:40.16ID:AatfYxHXジジイが昭和の知識でレスすんな
つーか、いい加減に死ねよ
0329デフォルトの名無しさん
2014/04/19(土) 15:31:58.78ID:9tEZQcT3http://codepad.org/WCpyEKL1
0330デフォルトの名無しさん
2014/04/19(土) 16:05:56.26ID:j1F3U2CRここ
// for(i=0;i<D && used[i]==0;i++){
for(i=0;i<D;i++){
if(used[i] != 0) continue;
0331デフォルトの名無しさん
2014/04/19(土) 16:17:09.98ID:9tEZQcT3あw
うっかりでした。ありがとうございます!
0332デフォルトの名無しさん
2014/04/21(月) 02:08:03.43ID:myPATJ+I0333デフォルトの名無しさん
2014/04/21(月) 20:25:21.57ID:aqBwlWRfスタティックリンクして使いたいのですが、あるもうひとつ別のライブラリも
リンクしていてその中にparseという関数があり、.DEFファイルでexportして
います。そうすると、parseという関数が二か所にあるのでエラーするようで、
error LNK2001: 外部シンボル "parse" は未解決です。
となります。良い解決方法ありますか?VS2013です。
0334デフォルトの名無しさん
2014/04/21(月) 20:28:06.08ID:FhRn8cH80335デフォルトの名無しさん
2014/04/21(月) 20:45:39.61ID:sEf+QBU0パネーな
0336デフォルトの名無しさん
2014/04/21(月) 21:03:16.16ID:nKQE7Rc+0337デフォルトの名無しさん
2014/04/21(月) 21:33:12.78ID:GRQWVWO30338デフォルトの名無しさん
2014/04/21(月) 21:37:25.48ID:Ugb12/p0呼び出し規約の間違いとかかね?
0339デフォルトの名無しさん
2014/04/21(月) 21:39:13.49ID:lfASPZAR0340デフォルトの名無しさん
2014/04/21(月) 21:49:42.60ID:bZ7teAnEアンダーラインが付いているとか
0341デフォルトの名無しさん
2014/04/21(月) 21:51:36.46ID:k3MeFw2G0342デフォルトの名無しさん
2014/04/21(月) 23:02:41.37ID:aqBwlWRfその中にparseという関数があります。その関数は.DEFでExportしています。boostのregexを使いたいので
#include "boost/regex.hpp" をインクルードして、ビルドすると、そのparseは
libboost_regex-vc120-mt-sgd-1_55.lib で定義されていますというような警告が出てエラーします。
少し調べてみたところ、regexに限らず、boostの関数名と同じ関数を自作のDLLの中に作って、それを.DEF
ファイルに書くと、同じエラー出ました。
たとえば、boost::filesystem::exists()に対して、void exists()という関数を作り、.DEFに書くと
同じエラーします。とりあえず.DEFに書くのをやめると解決するのですが、昨日からboost使い始めたばかりなので
基本的なこと良く分っていません。解決方法ありましたら教えて下さい。
教えていただいたLoadLibraryやextern "C"やdumpbin /EXPORTS は初めてなのでいま調査中です。
0343デフォルトの名無しさん
2014/04/21(月) 23:24:39.75ID:sEf+QBU0MT,MD,Unicode,SJIS,debug,release,32,64...
うひゃー
0344デフォルトの名無しさん
2014/04/21(月) 23:26:41.35ID:p/5mORia.defの書き方が間違ってんだろ
ちゃんと=でマングリ名指定してるか?
そもそもLoadLibraryを使ってないのに.defなんて要るのか疑問
0345デフォルトの名無しさん
2014/04/21(月) 23:44:38.09ID:bP/zsOii0346デフォルトの名無しさん
2014/04/21(月) 23:46:37.00ID:lfASPZAR0347デフォルトの名無しさん
2014/04/22(火) 00:32:10.03ID:XZpvcXn80348デフォルトの名無しさん
2014/04/22(火) 02:56:45.37ID:z792onaEビシッと
using namespace boost::filesystem;
using namespace boost::regex;
ってしているか?
0349デフォルトの名無しさん
2014/04/22(火) 13:53:46.62ID:z8WHMXPVそしてその次は呼び出し規約の罠に嵌るだろう
0350デフォルトの名無しさん
2014/04/23(水) 08:47:13.64ID:Fk2AHs0tインクルードガードを使ったヘッダーにグローバル変数を定義すれば使えばexternを使う必要ないし
どこかでグローバル変数の定義を必要もないんじゃないですか?
どうやるのが普通ですか?
0351デフォルトの名無しさん
2014/04/23(水) 10:08:33.15ID:PVKzZAxe0352デフォルトの名無しさん
2014/04/23(水) 10:32:56.00ID:Fk2AHs0tでも
const double AspectRatio = 1.653;
でもないとしたら
なにが正解ですか?
0353デフォルトの名無しさん
2014/04/23(水) 10:37:08.06ID:jGDL0Z250354デフォルトの名無しさん
2014/04/23(水) 11:24:29.54ID:+dMP+eIV0355デフォルトの名無しさん
2014/04/23(水) 11:25:41.35ID:PVKzZAxeそれらの定義で何が不満なの?
0356デフォルトの名無しさん
2014/04/23(水) 11:38:28.27ID:uO48px5Mてにをはちゃんと使って
0357デフォルトの名無しさん
2014/04/23(水) 12:13:19.90ID:rM84JtQIどれかの.cで定義
0358デフォルトの名無しさん
2014/04/23(水) 18:08:37.36ID:6DXUFUqFC++なら constで問題ない
それとも"変数"にするのが目的なのか
0359デフォルトの名無しさん
2014/04/23(水) 18:31:38.51ID:rpCr7eucextern要らない珍説のために降臨です
0360デフォルトの名無しさん
2014/04/23(水) 20:19:24.40ID:K3ATFzcJ下記のようなプログラムを作ってみたのですが、バグ(?)が発生しています。
具体的に言いますと、5.6/0.8=7であるはずなのに、「商の整数は・・・」の所が「6」と返されたり、「あまりの結果は・・・」の所が「0.8」と返されたりします。
検索して解決方法を探してみましたが、自分では解決できませんでした。
ご教示よろしくお願いします。
#include <stdio.h>
#include <math.h>
int main()
{
int shou_int;
double x=5.6, y=0.8, shou, amari;
shou = x/y;
shou_int = (int)shou;
amari = fmod(x,y);
printf("商の結果は・・・%f\n",shou);
printf("商の整数は・・・%d\n",shou_int);
printf("あまりの結果は・・・%f\n",amari);
return 0;
}
0361デフォルトの名無しさん
2014/04/23(水) 20:36:19.28ID:FOWeiF780.8×6+0.8=5.6 何ら問題ない。
商7、あまり0.0を期待したなら
誤差があるdoubleを使うことが誤り。
http://ideone.com/0NyTzT
0362KUSO KOTE ◆unko./w.Osri
2014/04/23(水) 21:07:45.02ID:awWEnTYHhttp://ideone.com/xhrAFz
0363デフォルトの名無しさん
2014/04/23(水) 21:47:01.45ID:Md9gKFL1動的確保をした関数からは確保した配列を他関数に渡せますが
他の関数からは渡せません(Segmentation fault)
なぜでしょうか
また、回避策はありますか
http://codepad/ssrgksbZ
0364デフォルトの名無しさん
2014/04/23(水) 21:48:24.84ID:Md9gKFL1すみません
http://codepad.org/ssrgksbZ
0365デフォルトの名無しさん
2014/04/23(水) 21:54:08.65ID:FOWeiF78なめてんのか。馬鹿に付けるクスリは無いわボケ
>void initMatrix(int **matrix,
↓
int **initMatrix(int **matrix,
matrix = initMatrix(…)
0366デフォルトの名無しさん
2014/04/23(水) 21:56:11.85ID:FOWeiF78>void initMatrix(int **matrix,int m,int
n)
↓
int **initMatrix(int m,int n){…}
matrix = initMatrix(m, n);
0367デフォルトの名無しさん
2014/04/23(水) 22:03:51.85ID:WNesHxZTなるほど
修正したところうまく動きました
ありがとうございます
初心者でよくわからないのですがなぜセグフォになるのでしょうか
関数が終わってしまうと自動的に開放されてしまうのですか?
0368デフォルトの名無しさん
2014/04/23(水) 22:05:34.00ID:K3ATFzcJそういう仕様(?)なんですね。
回答していただきありがとうございます。
0369デフォルトの名無しさん
2014/04/23(水) 22:05:58.79ID:FOWeiF78関数呼び出し側と呼ばれた先でそれぞれ
printf("%p\n", matrix);
して出直せ
0370デフォルトの名無しさん
2014/04/23(水) 22:07:22.97ID:FOWeiF78正: printf("%p\n", &matrix);
俺が出直してくるわボケ
0371デフォルトの名無しさん
2014/04/23(水) 22:17:03.67ID:WNesHxZTin main: [matrix] == (nil)
開放されたという認識であっていますか
0372デフォルトの名無しさん
2014/04/23(水) 22:39:21.12ID:D69Yihbi0373デフォルトの名無しさん
2014/04/23(水) 22:54:49.37ID:SZamVfz1あ,なるほど
そういうことでしたか
これだと値渡しと一緒ということですね
理解しました
ありがとうございました
0374デフォルトの名無しさん
2014/04/23(水) 22:58:31.24ID:6UzUL/o1口調何とかしろ、それ以前にまずは落ち着け
>ID:Md9gKFL1=ID:WNesHxZT
>>366のように、ポインタを引数にするのではなく返り値をポインタにするのが常道
0375デフォルトの名無しさん
2014/04/23(水) 23:06:33.34ID:h/mD0R6kやり取りしたい型の {C++ なら 参照} {Cなら ポインタ}
やり取りしたい型 TYPE
呼び出し元変数
TYPE a;
C++
関数 func_cpp(TYPE& arg);
呼び出し func_cpp(a);
C
関数 func_c(TYPE* arg);
呼び出し func_c(&a);
0376デフォルトの名無しさん
2014/04/23(水) 23:20:22.44ID:ThiOTjLk0377デフォルトの名無しさん
2014/04/23(水) 23:42:39.30ID:6UzUL/o1そもそもC++ならvectorあるけどな……
0378デフォルトの名無しさん
2014/04/24(木) 00:40:47.85ID:duqxO9nNセグフォあーだこーだの前に、超シンプルにして
int a = 1;
関数change_aでこの変数aを100に書き換えたい。
void change_a(???){???}
?のところどうしたら良いと思う
0379デフォルトの名無しさん
2014/04/24(木) 02:25:11.42ID:V/BmNssB「matrixは」解放されてるな、malloc()で得た領域は解放されていないが
#include <stdio.h>
void f(int arg) { arg = 2; }
int main() {
int v = 1;
f();
printf("%d\n", v); // さて、ここで表示される数は?その理由は?
return 0;
}
0380デフォルトの名無しさん
2014/04/24(木) 02:54:34.67ID:AklGWvZ+initMatrix(&matrix, ・・・)
showMatrix(sxmatrix)
・・・
って動作をしたかったんだろな
0381デフォルトの名無しさん
2014/04/24(木) 02:55:20.80ID:AklGWvZ+0382デフォルトの名無しさん
2014/04/24(木) 04:56:14.66ID:zfDiDIb5無意味なcastすんな
メモリ管理できねえならC++でかけ
http://codepad.org/BuDsQKHX
0383デフォルトの名無しさん
2014/04/24(木) 08:43:35.64ID:urYv0y/creturn matrix;
}
これってNRVOを期待してるけど
最適化されなかったら大ダメージ?
0384383
2014/04/24(木) 08:47:09.71ID:urYv0y/c大した問題ではないな。失礼
0385デフォルトの名無しさん
2014/04/24(木) 13:07:39.50ID:f/UtlFnw勉強してきます
>>378
void change_a(int *a){ *a = 100; }
>>379
1
値渡し
vの値をf()のargにコピーしているだけ
0386デフォルトの名無しさん
2014/04/24(木) 13:11:34.00ID:Z31Ilie8○ 変更しているf のargはvとは別の変数(値は呼び出し時のvのコピー)であるため
0387デフォルトの名無しさん
2014/04/24(木) 13:17:20.61ID:AklGWvZ+ってのはおいといて
f(v)であったとしても
int arg = v;
arg = 2;
return;
と同義だからな
0388デフォルトの名無しさん
2014/04/24(木) 18:51:35.45ID:UcaZdIF2>呼び出しはf()かよ
f()が呼び出しだなんて誰か言ったっけ。
Cでの宣言(引数は言及しない関数の宣言)を使って
特定の関数のことを指しているのではないの?
0389デフォルトの名無しさん
2014/04/24(木) 19:07:27.89ID:2icztRE+0390デフォルトの名無しさん
2014/04/24(木) 20:26:13.24ID:oR64+xqpじゃ
int* pa;
のpaを関数内で書き換えときは?
そして int** ppa;
のppaを関数内で書き換えるときは?
0391デフォルトの名無しさん
2014/04/24(木) 20:30:38.78ID:AklGWvZ+お前は宣言する時にわざわざ
int a, b;
int* c, *d;
とやっているのか
int a, b, *c, *d;じゃないのか
0392デフォルトの名無しさん
2014/04/24(木) 22:15:41.81ID:oR64+xqp0393デフォルトの名無しさん
2014/04/24(木) 22:25:22.75ID:tXCIarBm0394デフォルトの名無しさん
2014/04/24(木) 23:38:14.25ID:V/BmNssBすまんコンパイル通さずにレスした俺が悪かった、修正ありがとう…
要するに、>>364 ではポインタで分かりにくくなってるだけで
起きてるのはそれと同じことなんよね
0395デフォルトの名無しさん
2014/04/25(金) 00:05:21.23ID:fXiUYsOQ> int a, b, *c, *d;じゃないのか
こんな書き方する奴、まだいるのか
0396デフォルトの名無しさん
2014/04/25(金) 00:30:55.96ID:VLxq923M0397デフォルトの名無しさん
2014/04/25(金) 01:12:44.63ID:k40O+kcb使用するintを1行で書きたいんでしょ。
0398デフォルトの名無しさん
2014/04/25(金) 01:52:47.62ID:KcORG+H/0399デフォルトの名無しさん
2014/04/25(金) 01:54:09.50ID:m07o/u+5コンパイラを選びますし
0400デフォルトの名無しさん
2014/04/25(金) 02:08:33.86ID:KcORG+H/コンパイラのせいにして思考停止しているのか?
古い仕様のCで書くにしてもスコープ切ればよいだけで
未初期化変数、変数の使いまわしなんてバグの温床だからやっちゃダメ
0401デフォルトの名無しさん
2014/04/25(金) 02:39:15.54ID:m07o/u+5Cで書かれたメジャーどころでそんなイディオム使ってるのって存在するの?
そんな規約に出会った事はないし見たこともないのだが。
0402デフォルトの名無しさん
2014/04/25(金) 02:52:23.74ID:IKT5NePFどんな業界で残ってるんですか?
その業界には絶対に近づかないでおこうと思うので後学のために教えていただけると有り難いです。
0403デフォルトの名無しさん
2014/04/25(金) 03:53:59.11ID:VL+oWFa10404デフォルトの名無しさん
2014/04/25(金) 04:53:32.31ID:DUkBiaE/0405デフォルトの名無しさん
2014/04/25(金) 07:38:35.04ID:IKT5NePF初期化の必要がないってどんなとき?
0406デフォルトの名無しさん
2014/04/25(金) 07:54:41.16ID:VHgb1LJP(分岐して分岐先でそれぞれ代入)
0407デフォルトの名無しさん
2014/04/25(金) 07:56:53.20ID:jPmvuOB6空スコープの濫用でうっかり予期せぬ行連結かましたりする方がこわい
0408デフォルトの名無しさん
2014/04/25(金) 08:02:41.14ID:5CU5NLZq0409デフォルトの名無しさん
2014/04/25(金) 08:20:24.78ID:4HugTnIc教えてやろう。
お前の周りの家電のマイコンファームウェアだ。
ifやforと同じくらいスコープのネストが深くなるのが基本。
0410デフォルトの名無しさん
2014/04/25(金) 12:07:55.03ID:/pxP7/DV少なくともオレは見たことない
組み込みこそスタック領域は貧弱だろ
0411デフォルトの名無しさん
2014/04/25(金) 12:45:07.65ID:4HugTnIc変数に割り当てられるだけ。
例えばaとbは同じアドレスになる。
デストラクタとかないから、bの時点でaの値が
そのまま残ってる。
{ int a = 100; }
{ int b; }
0412デフォルトの名無しさん
2014/04/25(金) 12:51:13.14ID:jPmvuOB6最適化で省略してるだけじゃね
0413デフォルトの名無しさん
2014/04/25(金) 13:14:30.62ID:TvmR/CLK0414デフォルトの名無しさん
2014/04/25(金) 13:42:24.28ID:IMABWYJa0415デフォルトの名無しさん
2014/04/25(金) 13:43:29.17ID:B1sFbtmb回収ってメモリのことだと思うが
そもそもスコープに入るときに確保されたものじゃないから
スコープ抜けるときに回収しないのは当然
0416デフォルトの名無しさん
2014/04/25(金) 14:47:59.37ID:VL+oWFa1例えなんだから他は省いてるだろ
0417デフォルトの名無しさん
2014/04/25(金) 15:27:09.22ID:KcORG+H/それら異形の一群を、ヒトは古くから畏れを含み、いつしか総じて“バグ”と呼んだ。
0418デフォルトの名無しさん
2014/04/25(金) 19:07:14.27ID:DUkBiaE/0419デフォルトの名無しさん
2014/04/25(金) 19:08:46.41ID:ldQxBRm00420デフォルトの名無しさん
2014/04/25(金) 22:24:27.23ID:NLMkqq4lc++で拡張された部分を使わなければmallocを用いても平気でしょうか?
0421デフォルトの名無しさん
2014/04/25(金) 22:36:21.02ID:ldQxBRm00422デフォルトの名無しさん
2014/04/25(金) 22:36:57.12ID:mwVDX3LY0423デフォルトの名無しさん
2014/04/25(金) 22:37:35.91ID:jPmvuOB60424デフォルトの名無しさん
2014/04/25(金) 22:41:48.11ID:NLMkqq4l自分でも言ってて ん?って感じなんですが
for(int i; ; ++i)
みたいなものだとか
結構限定的に使うって感じなんですが
大まかには std空間とクラスを使わない
もっと言うと.cのものを.cppにかえちゃっても大丈夫でしょうかみたいな感じですかね...
0425デフォルトの名無しさん
2014/04/25(金) 22:44:37.36ID:I0yUpS7CたまたまCで使われてると、書き換えが必要になる (new とか delete とか)
0426デフォルトの名無しさん
2014/04/25(金) 22:44:57.28ID:XFGUZTlfC++の便利な機能を使いたいです。
C++コンパイラーを使ってCのスタイルでmallocを用いてもよかですか?
0427デフォルトの名無しさん
2014/04/25(金) 22:45:39.98ID:NLMkqq4l//でコメントがサポートされてないのもあるし
cppのおいしい部分だけ使いたいんですよね...
0428デフォルトの名無しさん
2014/04/25(金) 22:46:59.12ID:vKWRVcWD宜しいんじゃござんせんか?
0429デフォルトの名無しさん
2014/04/25(金) 22:49:02.72ID:vKWRVcWD>bool型があったりとか(intで代用すれば問題ないのですが)
C99にもそうでない環境でも、大抵stdbool.hが使えると思いますが。
>//でコメントがサポートされてないのもあるし
今時、そんな例外殆どないでしょう。そもそも、普通C99
0430デフォルトの名無しさん
2014/04/25(金) 22:50:46.85ID:NLMkqq4lすんません
ちょっと極端に言いたかっただけです
0431デフォルトの名無しさん
2014/04/25(金) 22:53:19.80ID:LtcOoigKいわゆるbetter Cか……別に良いんじゃない?
ただ、mallocじゃなくてnew使おうな
それに、例外・テンプレート・クラスはC++の旨味の大部分だったりするけど大丈夫?
(STLは例外・テンプレート・クラスによる産物なので使わないって意味でOK?)
0432デフォルトの名無しさん
2014/04/25(金) 23:15:36.79ID:JcA2jKFrむしろ便利なC関数を使えるのがC++の利点だと思う
printfの代わりにcoutしかなかったら間違いなくハゲるし、
mallocの代わりにchar配列をnewするとか、やってられんよ
0433デフォルトの名無しさん
2014/04/25(金) 23:18:06.68ID:ldQxBRm0後でオーバーロードしたくなったりするじゃんね
0434デフォルトの名無しさん
2014/04/25(金) 23:22:28.07ID:LtcOoigK>printfの代わりにcoutしかなかったら間違いなくハゲる
確かにマニピュレータ使い倒して書式設定するのは慣れないとキツいかもね
でもただ表示させたいだけならcout(ストリーム処理)の方が修正も楽じゃん?
>char配列をnewする
悪いことは言わないからstring使っとけ
0435デフォルトの名無しさん
2014/04/25(金) 23:31:47.30ID:vKWRVcWDstreamのいい点はstd::complexでも分かるように、自作のクラスも階層的に
一度出力処理を書いておけば事が足りる点だな。
0436デフォルトの名無しさん
2014/04/26(土) 00:07:53.16ID:4cZNGc28ままだったりdelete[]使わなかったり、コンパイルエラーにならないところではまりそう。
0437デフォルトの名無しさん
2014/04/26(土) 00:14:02.92ID:2mPnYH200438デフォルトの名無しさん
2014/04/26(土) 00:19:25.71ID:LrSvGOM80439デフォルトの名無しさん
2014/04/26(土) 00:21:45.69ID:e4eB3nqK0440デフォルトの名無しさん
2014/04/26(土) 00:54:22.87ID:TYiKquMH私も平気にfreadとか使ってました。
0441デフォルトの名無しさん
2014/04/26(土) 01:00:10.95ID:LAXHDRshガシガシ使わないとそうそう問題にはなりにくいからな……>メモリーリーク
0442デフォルトの名無しさん
2014/04/26(土) 01:23:39.24ID:RUZS612/static const LPCTSTR list[] = {TEXT("AAA"),TEXT("BBB"),TEXT("CCC")};
LPCTSTRの前にconstつけるのと、つけないのでどんな変化があるんですか?
0443デフォルトの名無しさん
2014/04/26(土) 01:35:06.71ID:rnp+GXdWそうだとしても明記したかったんだろ。
0444デフォルトの名無しさん
2014/04/26(土) 01:42:16.09ID:fIjhv7f70445デフォルトの名無しさん
2014/04/26(土) 07:44:36.86ID:fzTmiJwLmalloc()なんて裸でつかうもんじゃないよ
0446デフォルトの名無しさん
2014/04/26(土) 07:47:28.76ID:fKMdaZRqint main() {
Test test;
test.func();
}
// test.h
class Test {
void func();
};
// test.cpp
void Test::func() {
Test2 tes2;
test2.func2();
}
// test2.h
class Test2 {
void func2();
};
// test2.cpp
void Test2::func2(){
printf("hello\n");
}
0447デフォルトの名無しさん
2014/04/26(土) 07:50:59.21ID:fKMdaZRq// makefile
main.o : main.cpp
g++ -c main.cpp
test.o : test.cpp
g++ -c test.cpp
test2.o : test2.cpp
g++ -c test2.cpp
libtest2.a : test2.o
ar crsv libtest2.a test2.o
libtest.a : test.o libtest2.a
ar crsv libtest.a test.o libtest2.a
program : main.o libtest.a
g++ -o main main.o libtest.a
0448デフォルトの名無しさん
2014/04/26(土) 07:52:03.99ID:FDgGm5F+0449デフォルトの名無しさん
2014/04/26(土) 07:56:41.06ID:fKMdaZRqこの理由を教えて頂けないでしょうか?
自分では,ar crsv libtest.a test.o libtest2.aでは,Test::funcとTest2::func2が
紐づかないのかなと考えているのですが,,,
尚,makefileの最終行をg++ -o main main.o libtest.a libtest2.aとすれば
成功することはわかっています.
0450デフォルトの名無しさん
2014/04/26(土) 08:04:58.64ID:H4OEZVXF0451デフォルトの名無しさん
2014/04/26(土) 08:14:52.42ID:qVfVXmNlstd::make_sharedの引数にthisポインタを使用していることが問題っぽいのですが。。。
どなたかC++にお詳しい方、どうか御教授くださいまし。
#include <iostream>
#include <memory>
class T;
class TS;
class TS1;
class TS2;
class TS
{
public:
virtual ~TS() {}
virtual void change() {};
};
class T
{
public:
T() { ts_ = std::make_shared<TS>(); }
void f1() { ts_ = std::make_shared<TS1>(this); } // <= ここと
void f2() { ts_ = std::make_shared<TS2>(this); } // <= ここに問題がありそうなんです。
void ft() { ts_->change(); }
private:
std::shared_ptr<TS> ts_;
};
0452デフォルトの名無しさん
2014/04/26(土) 08:16:25.20ID:qVfVXmNlclass TS1 : public TS
{
public:
TS1(T* t) : t_(t) {}
virtual ~TS1() {std::cout << "TS1 is dead" << std::endl; }
virtual void change() { t_->f2(); }
private:
T* t_;
};
class TS2 : public TS
{
public:
TS2(T* t) : t_(t) {}
virtual ~TS2() {std::cout << "TS2 is dead" << std::endl; }
virtual void change() { t_->f1(); }
private:
T* t_;
};
int main(void)
{
T t;
for (int i = 0; i < 20; i++) {
std::cout << i;
t.ft();
}
std::cout << "END" << std::endl;
}
0453デフォルトの名無しさん
2014/04/26(土) 08:19:13.28ID:H4OEZVXF0454デフォルトの名無しさん
2014/04/26(土) 08:22:01.61ID:qVfVXmNl0455デフォルトの名無しさん
2014/04/26(土) 08:27:27.83ID:BINT6LGEmallocの代わりにnewを使えというやつはバカ。
エラー処理の考え方が根本的に違って大きな見直しが必用になるのだから
過剰なものを「こちらがいいんだ!」と押しつける
ありがた迷惑
0456デフォルトの名無しさん
2014/04/26(土) 08:57:11.02ID:qVfVXmNl自己解決しました。
単純にstd::make_shared<TS1>とstd::make_shared<TS2>を呼び出す前に
TS1とTS2の定義がなされてなかったためエラーが出ただけでした。
あまりにも長いエラーメッセージだったのでとんでもないことをしでかしているのかと焦って質問したのですが、
なんともないような話でした。
すいません。。。 > <
0457デフォルトの名無しさん
2014/04/26(土) 09:17:48.18ID:oTpRF7L20458デフォルトの名無しさん
2014/04/26(土) 09:23:24.24ID:e4eB3nqK単にメンバー内のクラスに持ち主の参照を持たせたいだけだとおもう。
>>455
プリミティブ型なら文句は言わんがC++の構造体とかもmalloc使うのは嫌な匂いがするな。
mallocしか使えないなら大人しくC言語使ってた方がいいんじゃね?
そもそもクラス使わないC++に何のメリットがあんの?
0459デフォルトの名無しさん
2014/04/26(土) 09:29:41.92ID:oTpRF7L20460デフォルトの名無しさん
2014/04/26(土) 12:45:37.15ID:LAXHDRsh>クラス使わないC++に何のメリットがあんの?
俺も同意見だが、覚えるのが大変だから覚えない、ってことじゃね?
http://www.kijineko.co.jp/tech/betterc/1
0461デフォルトの名無しさん
2014/04/26(土) 13:05:57.99ID:dMJ+hsKflist[] 自体が const になるよ。
0462デフォルトの名無しさん
2014/04/26(土) 13:10:59.56ID:dMJ+hsKfその条件を守っている限りは、問題ないと思いうよ。
*.c と混在させる場合は外部リンケージに注意ね。
0463デフォルトの名無しさん
2014/04/26(土) 13:12:17.01ID:+AzHArIuコンストラクタやデストラクタその他メソッドがあっても普通のことで
だから「構造体ならmalloc()でもいい」ってのは言えないんよね
…だから、その構造体が自分が管理するものであって
C形式の構造体としてのみ定義されるのなら、かなあ
上にも書かれてる通り、malloc()と違いnewのそれは例外になるから
例外処理を知らない人にはその場で強制終了みたいなもんなんよね
…まあメモリすら確保できないんなら、大概は強制終了で良いような気もするがw
0464デフォルトの名無しさん
2014/04/26(土) 15:11:50.98ID:au4nADwanewよりもシンプルな手段を取れるってことだろう。
例外じゃなく返り値で判定できるのもいいところ。
当たり前だけど、C++のオブジェクトをmallocで確保するようなことはしないほうがいい。
0465デフォルトの名無しさん
2014/04/26(土) 15:29:44.95ID:e4eB3nqKなんだ甘えか。
だったらC言語使ってろよって話ですね。
C++の案件にCの知識だけでずっとやっていこうとか思ってるならしね。
>>464
型を決めずに単なるメモリ確保する事って殆ど無いだろ。
例外が嫌ならせめてnew(std::nothrow)使え。それでも例外発生するときはあるがその時はmallocで代替出来ないときだ。
0466デフォルトの名無しさん
2014/04/26(土) 15:36:17.91ID:EyRxebkgC++はベターCとしても使えるようになってるんだしmalloc/free使ってもいいだろ
ここの質問者はプログラミング専門とは限らないんだし
0467デフォルトの名無しさん
2014/04/26(土) 15:41:00.49ID:ztZgog+iどこをいじったらいいか教授願います
error RC2104: undefined keyword or key name: C:\asukalib-master\asukalib-master\AsukaLib.rc 99 1 AsukaLib
https://github.com/naka2/asukalib ソース一式
https://github.com/naka2/asukalib/blob/master/AsukaLib.h
https://github.com/naka2/asukalib/blob/master/resource.h
0468デフォルトの名無しさん
2014/04/26(土) 15:46:49.33ID:rnp+GXdW0469デフォルトの名無しさん
2014/04/26(土) 15:49:33.08ID:e4eB3nqKいや、だからクラスも使わないC++の何がベターなの?
メリットない使い方してmalloc使うことによって落とし穴にハマるぐらいならC言語使えばいいじゃん?C++覚える気もないみたいだし?
0470デフォルトの名無しさん
2014/04/26(土) 15:58:18.06ID:au4nADwa例えば、Cの文字列処理は初心者泣かせなので、文字列処理のみ
std::stringを使うのはありだよ
0471デフォルトの名無しさん
2014/04/26(土) 16:06:00.04ID:e4eB3nqK例外、テンプレート、クラスを使わないって前提で話してたんだけど?
std::string使う時点で全てに当てはまりますやん
0472デフォルトの名無しさん
2014/04/26(土) 16:24:09.22ID:EyRxebkg質問者が「関数オーバーロード」を上げてるでしょ
たとえ「それだけ」であっても便利だと思うけど
引数型ごとに関数名変えるのは確かに面倒だし
0473デフォルトの名無しさん
2014/04/26(土) 16:27:43.67ID:dMJ+hsKf基本的には、とにかくやってみろ、でいいんじゃね。
本人が制限つけた上でオーバーロード機能を使いたいって言ってるだけなんだから。
仕事じゃないんだから、そこまで全力で反対しなくても。
0474デフォルトの名無しさん
2014/04/26(土) 18:19:37.24ID:LAXHDRshベターC的な要素って大抵最新のCには実装されているんだよな(例:ブロックの途中で宣言)
関数オーバーロードとかのようにほんのつまみ食いしかしないってんなら知らん
でもまあstd::stringとかstd::vectorとかはちょっと覚えるだけで楽できる機能の代表だったり……
0475デフォルトの名無しさん
2014/04/26(土) 18:37:04.64ID:Vsr2O9eZ例外安全はくそくらえってことですねわかります
0476デフォルトの名無しさん
2014/04/26(土) 18:48:00.90ID:JLcEd4yY0477デフォルトの名無しさん
2014/04/26(土) 19:22:58.63ID:pdO++Zde0478デフォルトの名無しさん
2014/04/26(土) 19:30:11.19ID:e4eB3nqKそもそもC言語だけ使ってたら例外と無縁で居られるかと言えばそうでもないし、例えばWindowsだといろんなWin32APIがC言語で使ってても例外出す(SEH)。
0479デフォルトの名無しさん
2014/04/26(土) 19:40:11.42ID:TksPWY/cvector<int> a(100); // ここで例外出たらどうすんの
free(p);
0480デフォルトの名無しさん
2014/04/26(土) 19:51:25.71ID:e4eB3nqKそのままプロセス終了してなんの問題もないじゃん。
0481デフォルトの名無しさん
2014/04/26(土) 19:56:45.35ID:ahYJ/99m0482デフォルトの名無しさん
2014/04/26(土) 19:58:16.52ID:e4eB3nqK外に例外出さない事が例外安全ってわけじゃないぞ?
0483デフォルトの名無しさん
2014/04/26(土) 20:01:51.06ID:ahYJ/99m>Win32APIがC言語で使ってても例外出す(SEH)
参考までに、例外を出すAPIは何?
0484デフォルトの名無しさん
2014/04/26(土) 21:06:09.66ID:LAXHDRsh例外安全の段階:
[1]不送出保証→そもそも例外を外に出さない
[2]強い例外安全性→失敗しても副作用を起こさず、全データは元の値を保持
[3]基本的例外安全性→失敗すると副作用が起こるかもしれないがデータは有効な値である
0485デフォルトの名無しさん
2014/04/27(日) 09:02:09.27ID:jKbi43u9> 関数オーバーロードとかのようにほんのつまみ食いしかしないってんなら知らん
恥ずかしくない?
ちょっと ROM ってなよ。
0486デフォルトの名無しさん
2014/04/27(日) 10:26:32.60ID:GHcWHbChInitializeCriticalSection
0487デフォルトの名無しさん
2014/04/27(日) 13:12:36.77ID:lkIW61dBint a = 1, b = 0, c;
c = a / b; // SEH発生。
RaiseExceptionでもSEH起こせる。
0488デフォルトの名無しさん
2014/04/27(日) 13:50:54.86ID:t1mtJyDY流石にクラス使っちゃうとbetterCどころかC++でしか無いと思うが…
>>474
そもそもbetterCって言葉自体が昔のCで生まれた言葉だからな
まあ、現代ではC++環境をC言語として使わざるを得ないケースもある
その結果C99ではなくbetterCに成らざるを得ないって事情もあるけど
0489デフォルトの名無しさん
2014/04/27(日) 15:25:31.54ID:ysde5Cmkundefined behaviorの挙動や
明示的に例外だすAPIの話をされてもねぇ
0490デフォルトの名無しさん
2014/04/27(日) 15:25:43.37ID:XlPRquUKどうSEHを捕まえてるのか良くわからんな
0491デフォルトの名無しさん
2014/04/27(日) 16:00:19.19ID:jKbi43u9> 明示的に例外だすAPIの話をされてもねぇ
意味わからん
0492デフォルトの名無しさん
2014/04/27(日) 22:54:26.81ID:OJzsjaa+0493デフォルトの名無しさん
2014/04/27(日) 23:03:22.74ID:dRMpu4rZ全角文字の文字コードは何?JIS?shift-JIS(CP932)?, EUC?, それとも?
0494デフォルトの名無しさん
2014/04/27(日) 23:17:09.79ID:KqK7z0IN10進数で表すと5桁以内の数字A の二乗の下五桁をとって新しいAとし、・・・
をできるだけ早く何回も繰り返す計算をC言語で実現したいです。どんな方法が最適でしょうか?
素直に
int A = 765 //初期値
for(i=0; i<10000; i++){
A = (A*A) % 100000;
}
とするのが一番早いのでしょうか
0495デフォルトの名無しさん
2014/04/27(日) 23:20:06.18ID:D03yOYH60496デフォルトの名無しさん
2014/04/28(月) 00:07:41.35ID:vBB1ZBuLマジレスすると、その計算はもっとエレガントに書ける
http://d.hatena.ne.jp/kazu-yamamoto/20090223/1235372875
ついでにメモ化を施せば完璧
0497デフォルトの名無しさん
2014/04/28(月) 00:37:29.03ID:S0oQyofE0498デフォルトの名無しさん
2014/04/28(月) 05:29:03.79ID:nB7PeshGAが符号付き32bitで 46341 以上の時、また、
Aが符号無し32bitで 65537 以上の時、
A * A はオーバーフローするね。
A = (A * A) % 100000;
で、次のAは 100000 の剰余なのでありえる。
Aを64bit値にするか、宿題の制限で32bit整数しか
使えないのなら自前でやるか
0499デフォルトの名無しさん
2014/04/28(月) 11:03:17.60ID:3V71eLEmオーバーフローを回避するにはキャストすると良いよ
A = ((long long)A * A) % 100000;
0500デフォルトの名無しさん
2014/04/28(月) 14:46:48.36ID:JkAfPWWwパズル寄りの問題なんじゃないの
0501デフォルトの名無しさん
2014/04/28(月) 15:08:25.42ID:97z81I41intには128bitがないのでしょうか?
0502デフォルトの名無しさん
2014/04/28(月) 15:22:00.40ID:mheEU0a2intが128ビットでも問題ない
0503デフォルトの名無しさん
2014/04/28(月) 15:58:44.30ID:RIsmFlCa0504デフォルトの名無しさん
2014/04/28(月) 16:05:25.72ID:fuxL29fH0505デフォルトの名無しさん
2014/04/28(月) 19:04:52.24ID:t63YSNJY>vs は80bitだったし
本当か?単にFPUの内部処理桁というだけで、表からは触れないんじゃなかったか?
0506デフォルトの名無しさん
2014/04/28(月) 19:15:35.13ID:mheEU0a20507デフォルトの名無しさん
2014/04/28(月) 19:24:46.50ID:fuxL29fHソース貼っておく
http://msdn.microsoft.com/ja-jp/library/9cx8xs15.aspx
0508デフォルトの名無しさん
2014/04/28(月) 20:08:02.05ID:eYjErRwy//Form1.h
private:
PictureBox^ p;
System::void Form1_Load(System::Object^ , Sytem::EventArgs^ e)
{
p = gcnew PictureBox;
p->Dock = DockStyle::Fill;
p->BackColor = Color::White;
p->Paint += gcnew System::Windows::Forms::PaintEventHandler(this, &Form1::display);
this->Controls->Add(p);
}
void display(Object^ s, System::Windows::Forms::PaintEventArgs^ e)
{
draw(e, p);
}
//graph.cpp
void draw(System::Windows::Forms::PaintEventArgs^ e, System::Windows::Forms::PictureBox^ p)
{
System::Drawing::Graphics^ g = e->Graphics;
//描画処理
}
のように分割コンパイルしても大丈夫ですか(一応エラーは出なかったのですが)
0509デフォルトの名無しさん
2014/04/28(月) 20:32:31.13ID:/YsEmaXYエラーも警告も無ければ大丈夫じゃない?
0510デフォルトの名無しさん
2014/04/28(月) 20:34:54.25ID:eYjErRwyありがとうございます
たしかにチョイスしているところが微妙ですね...
要はForm1.hにガリガリ書きたくないので外部ファイルに委託したかっただけです
0511デフォルトの名無しさん
2014/04/28(月) 20:50:39.82ID:/YsEmaXY汚ならしく我慢できないって話でしょ?
それは昔から言われてる事で改善される気配もないから
GUI周りはC#で書くのが基本だよ
0512デフォルトの名無しさん
2014/04/28(月) 20:55:46.98ID:eYjErRwyそうなのでしょうね...
ところで あまりC#には詳しくないので、
.NETを使う上ではc++とc#の実行速度に違いとかは出てくるのでしょうか
0513デフォルトの名無しさん
2014/04/28(月) 21:06:47.27ID:/YsEmaXYど忘れしたが3文字のなんだったかな、IronPythonで使われてるソレは遅い
でも、C#,C++/CLI,VB.NET,Boo,F#...なんかは同等とみていい
C++/CLIのメリットは
速度じゃなくて、P/Invokeでラッパー書かれることが無いようなマイナーな
C/C++なライブラリをそのまま扱えるので手抜きが出来る
正直それだけだと思うよ
0514デフォルトの名無しさん
2014/04/28(月) 21:12:51.02ID:eYjErRwyc#はシンプルに書けるので良いですよね
いままでC/C++を使っていましたが
確かにC#に移行してみるのも手ですね
0515デフォルトの名無しさん
2014/04/28(月) 22:17:33.16ID:nYT9hkTJ3文字っつーとDLRかな
まああれが遅いのはしゃーない気がする
0516デフォルトの名無しさん
2014/04/28(月) 23:41:11.77ID:rB8lTHTIなにかわかりやすい目印を書きたいんだけど
みんなはどうしてる?
0517デフォルトの名無しさん
2014/04/28(月) 23:42:52.41ID:nYC6TNjH0518デフォルトの名無しさん
2014/04/29(火) 00:04:11.92ID:aeW4+FvOそれそれ
しゃーない部分があるのは承知してるし
場合によっては使える状況もあるだろうから否定はしない
ただ、用途に合わない人にとって
裏切られたというか騙された感を持つのはこれもまたしゃーない部分なんじゃないかな
ソレ系のものはソレである事をなるべく目立たないよう擬態する傾向にあるよね
suffixにソレを付ける命名規則を義務付けて欲しいよマジで
手間が増えるだけで嫌がらせでしか無い
0519デフォルトの名無しさん
2014/04/29(火) 00:24:59.21ID:Br1Uxtes// no break
0520デフォルトの名無しさん
2014/04/29(火) 00:45:09.57ID:9oDU/gS/C++の原始的なリソース管理に慣れるにはどういう学習素材が推奨されますか?
0521デフォルトの名無しさん
2014/04/29(火) 00:47:07.98ID:QmOywj8QC++もJavaもC#も変わらないと思うのだが
0522デフォルトの名無しさん
2014/04/29(火) 01:18:14.33ID:QkXu+GLn0523デフォルトの名無しさん
2014/04/29(火) 01:32:39.98ID:F17WGv/b実際すごく苦労している
0524デフォルトの名無しさん
2014/04/29(火) 01:46:56.22ID:aeW4+FvO質問がおかしい
> JavaとC#で長く経験をつんできた開発者
であるならばCは使えるでしょ
0525デフォルトの名無しさん
2014/04/29(火) 02:48:00.08ID:AbATIs9f#include の前に必要な準備はありますか?
(どこかからヘッダファイルをダウンロードして突っ込むとか)
0526デフォルトの名無しさん
2014/04/29(火) 02:51:13.36ID:tzWpsPe5標準ライブラリなら何も要らないよ
普通に「#include <stdio.h>」とか書けばいい
と言うか他のコンパイラでも標準ライブラリは
デフォで組み込まれてるだろw
0527デフォルトの名無しさん
2014/04/29(火) 05:43:49.50ID:9oDU/gS/C++でコード書くと必ずメモリリークが起ります。
こんな私が読むべき基本書籍があればご教示ください。
0528デフォルトの名無しさん
2014/04/29(火) 05:58:15.66ID:04fcb81y0529デフォルトの名無しさん
2014/04/29(火) 06:04:36.63ID:pH50e3ah0530デフォルトの名無しさん
2014/04/29(火) 07:42:22.09ID:TKW4+dLj0531デフォルトの名無しさん
2014/04/29(火) 08:09:12.73ID:B/znruqO0532デフォルトの名無しさん
2014/04/29(火) 08:51:47.48ID:TKW4+dLj0533デフォルトの名無しさん
2014/04/29(火) 09:11:51.14ID:devc/bafオブジェクト指向を忘れるのが第一
0534デフォルトの名無しさん
2014/04/29(火) 09:40:00.00ID:5ghJ9rEO関数別にしてその関数をループで何回も呼んで
どの関数でリークしてるか確認
0535デフォルトの名無しさん
2014/04/29(火) 09:41:52.06ID:5ghJ9rEO0536デフォルトの名無しさん
2014/04/29(火) 18:35:47.38ID:lGzouSbD0537デフォルトの名無しさん
2014/04/29(火) 18:46:49.51ID:qPmT0/IR0538デフォルトの名無しさん
2014/04/29(火) 18:55:46.21ID:lGzouSbDじゃあ代案出してみろよ
0539デフォルトの名無しさん
2014/04/29(火) 19:00:52.43ID:qPmT0/IRこれに一票
0540KAC
2014/04/29(火) 19:16:34.41ID:3cTlepGQその手の手法に関するいい書籍は見たこと無いな。
とはいえ、さほど難しい話じゃ無い。
忘れててもなんとかなるような案が上に色々紹介されてるが、
基本的にはdeleteを忘れなければいい。
処理の初めにnewしたら処理が終わってdelete
クラス生成時にnewしたらクラス消すときにdelete
というように、作るタイミングと消すタイミングは対にできる。
(初めに0初期化して適宜newする方法でも同じ考えでいい)
プログラムで何かをロックしてロック解除を忘れることは無いよな?
同じようなイメージで扱えばいいだけだよ。
0541デフォルトの名無しさん
2014/04/29(火) 19:17:16.90ID:lGzouSbDそもそもjava c#と違ってnew避けるべきだと思うんだが速度は落ちるし
一応gcを実装するライブラリもあったような記憶はあるけど
いきなりc++の設計に手を出すんじゃなくてcから手を出した方が良いと思うんだが素人だけど
>>539
あとスマポって万能なの?
0542デフォルトの名無しさん
2014/04/29(火) 19:22:38.00ID:YSaKMYqx0543デフォルトの名無しさん
2014/04/29(火) 19:27:46.11ID:lGzouSbDそうそれ
ところでBoehmGCには弱点とかある?
0544デフォルトの名無しさん
2014/04/29(火) 19:39:02.96ID:04fcb81ySTLの標準装備のコンストラクタ、デストラクタでは不可能なことはなによ?
0545デフォルトの名無しさん
2014/04/29(火) 19:41:50.07ID:qPmT0/IR>STLの標準装備のコンストラクタ、デストラクタでは不可能なことはなによ?
とはなんぞ
0546デフォルトの名無しさん
2014/04/29(火) 19:42:08.49ID:lGzouSbD速度はどれだけ違うんだよ←実行する環境によって変わるだろ
0547デフォルトの名無しさん
2014/04/29(火) 19:56:20.09ID:04fcb81y動的確保して自動で解放するが。
char *p = new char [10000];
int *q = new int [10000];
↓
string p(10000,'\0');
vector<int> q(10000);
0548デフォルトの名無しさん
2014/04/29(火) 19:58:13.49ID:Kb/I3Vlc0549デフォルトの名無しさん
2014/04/29(火) 20:00:27.36ID:qPmT0/IRそれはコンストラクタ・デストラクタとは言わない(だから細かいことかもと言った)
0550デフォルトの名無しさん
2014/04/29(火) 20:05:26.50ID:qPmT0/IRあと出来ないこととしてポリモーフィズムを使うクラスの動的確保が思いつかないのはどうかと
0551デフォルトの名無しさん
2014/04/29(火) 20:08:30.04ID:lGzouSbDkwsk
0552デフォルトの名無しさん
2014/04/29(火) 20:20:37.20ID:qPmT0/IR管理はAだけで行いとして
new/deleteを使わずvectorだけで行えるかと言ったら
行えないでしょ
0553デフォルトの名無しさん
2014/04/29(火) 20:26:46.08ID:lGzouSbD0554デフォルトの名無しさん
2014/04/29(火) 20:33:46.15ID:04fcb81yできれば簡易なコードをのせてくれないか
0555デフォルトの名無しさん
2014/04/29(火) 20:48:13.51ID:qPmT0/IR{
0556デフォルトの名無しさん
2014/04/29(火) 20:52:35.27ID:qPmT0/IRpush_back時でエラーになると思ったが・・・
まあどのみち出来ないが
0557デフォルトの名無しさん
2014/04/29(火) 21:21:18.44ID:pH50e3ah0558デフォルトの名無しさん
2014/04/29(火) 21:25:20.68ID:qPmT0/IR0559デフォルトの名無しさん
2014/04/29(火) 21:26:58.34ID:l3FqGA+x0560デフォルトの名無しさん
2014/04/29(火) 21:27:01.68ID:pH50e3ahnew使ってvector<unique_ptr<A>>にするわ
0561デフォルトの名無しさん
2014/04/29(火) 21:39:32.17ID:qPmT0/IR0562デフォルトの名無しさん
2014/04/29(火) 22:33:19.67ID:Xa41IdEJ0563デフォルトの名無しさん
2014/04/29(火) 22:34:28.52ID:Xa41IdEJああそれスラッシング起きてますわ
エラーにはならない
0564デフォルトの名無しさん
2014/04/29(火) 22:40:08.35ID:dgi8jKwWスライシングでは?
と突っ込んでみる。
0565デフォルトの名無しさん
2014/04/29(火) 23:29:13.34ID:U0vwb+Hl0566デフォルトの名無しさん
2014/04/29(火) 23:53:34.34ID:5ghJ9rEO0567デフォルトの名無しさん
2014/04/30(水) 10:37:19.00ID:Q2kmZuTL1000番目だけtrueにしてあとは0にしたいんですけど、
push_backを1000回繰り替えさないと駄目なんですか?
まとめて入力する方法があれば数十回0をコピーするだけでいいと思うのですが。
0568デフォルトの名無しさん
2014/04/30(水) 10:44:35.64ID:d1Jpupa6・vector<bool>は基本的に使わない方が良い。詳しくは次のURL参照
https://sites.google.com/site/cpprefjp/reference/vector
boolの配列的なものが欲しければdeque<bool>を使うか、std::bitsetを使うか、
boost::dynamic_bitsetを使うことをお勧めする
http://d.hatena.ne.jp/melpon/20111114/1321297053
・配列やコンテナを同じ値で埋める際はstd::fillを使うといい。使い方は次の通り
http://topcoder.g.hatena.ne.jp/nitoyon/20081019/1224429244
http://ppp-lab.sakura.ne.jp/cpp/library/016.html
0569デフォルトの名無しさん
2014/04/30(水) 10:45:43.72ID:cWCEN50Wそんなことは無い。いろんなメンバ関数があるからちゃんとドキュメント見て好きに使えばいい。
0570デフォルトの名無しさん
2014/04/30(水) 10:54:40.91ID:DEeR9Enbv.resize(1001,false);
v[1000]=true;
0571デフォルトの名無しさん
2014/04/30(水) 10:57:37.86ID:Q2kmZuTL0572デフォルトの名無しさん
2014/04/30(水) 10:59:21.14ID:dDdWmtnK0573デフォルトの名無しさん
2014/04/30(水) 11:00:28.63ID:cWCEN50W標準ではそんなことは規定されていない。実装によっては最適化されていることがあるかもしれない。
なんにせよ、速度は実測が基本。
0574デフォルトの名無しさん
2014/04/30(水) 11:00:39.21ID:Q2kmZuTLありがとうございます。
0575デフォルトの名無しさん
2014/04/30(水) 16:38:42.27ID:0+BDS9HEよろしくお願いします。
0576デフォルトの名無しさん
2014/04/30(水) 16:54:41.19ID:d1Jpupa6256との剰余を取ってから割ることを繰り返せばおk
0577デフォルトの名無しさん
2014/04/30(水) 17:00:23.79ID:a+D9ZyB5puts(inet_ntoa((struct in_addr){.s_addr = inet_addr("2130706433")}));
0578デフォルトの名無しさん
2014/04/30(水) 17:44:08.61ID:0+BDS9HEありがとうございます
0579デフォルトの名無しさん
2014/04/30(水) 22:52:24.52ID:Aiz3G3SdJavaでいうとextends、C#でいうとwhere T :みたいなもの
0580デフォルトの名無しさん
2014/04/30(水) 23:00:32.39ID:d1Jpupa6C#のってこれ?
http://msdn.microsoft.com/ja-jp/library/bb384067.aspx
よく分からんが、テンプレートって型が違ってもOKなようにするものじゃねーの?
0581デフォルトの名無しさん
2014/04/30(水) 23:05:35.65ID:6FRdosdN0582デフォルトの名無しさん
2014/05/01(木) 01:19:59.17ID:f1m4ekfh_itow_s(i,num,10,sizeof(num));
item.pszText = num;
0583デフォルトの名無しさん
2014/05/01(木) 01:21:55.06ID:f1m4ekfh→_itow_s(i,num,sizeof(num), 10);
って誘導先のスレに質問が移動してくる前に書いちまったw
0584デフォルトの名無しさん
2014/05/01(木) 04:21:23.22ID:w9/KPUlostruct st1 {
int a;
struct st2 *b;
};
struct st2 {
int a;
struct st1 *b;
};
のような参照の仕方は仕様的に問題ありませんか?
一応gccではできたっぽいんですが、ほかのコンパイラとかで使っても大丈夫ですか?
どーも自信持てなくて、、、
0585デフォルトの名無しさん
2014/05/01(木) 04:42:44.04ID:cjwRCMlg0586デフォルトの名無しさん
2014/05/01(木) 06:24:01.30ID:9zM4+Fav0587586
2014/05/01(木) 06:29:36.93ID:9zM4+Fav型が決まっているから、前方宣言いらんのか
0588デフォルトの名無しさん
2014/05/01(木) 07:13:14.25ID:cjwRCMlg0589デフォルトの名無しさん
2014/05/01(木) 16:24:23.71ID:O61PxCRM0590デフォルトの名無しさん
2014/05/01(木) 17:50:45.92ID:EbX4Dp2dこのレスを参考に
int i = 0; WCHAR num[2]={0}; LVITEM item = {0};
for(i=0;i<20;i++){
_itow_s(i+1,num,10,sizeof(num));
item.pszText = num;
item.iItem = i;
ListView_InsertItem(hList , &item);
}
としたところプログラムが起動しなくなってしまいました。
iの中を確認したところ_itow_sの時にiが初期化してしまうために無限ループが起きてしまっていると思うのですが、
_itow_s()にint変数を初期化する仕様があるのでしょうか?
初期化するようならint変数をもう1個用意すれば動くのですが、初期化の伴わないintからWCHARへの変換を行う関数というものは無いのでしょうか?
どなたかよろしくお願いします
0591デフォルトの名無しさん
2014/05/01(木) 17:59:56.59ID:K+RzAtOV0592デフォルトの名無しさん
2014/05/01(木) 18:00:07.87ID:cjwRCMlgitem.pszText = const_cast<LPWSTR>(strnum.c_str());
0593デフォルトの名無しさん
2014/05/01(木) 18:49:41.25ID:O61PxCRM0594デフォルトの名無しさん
2014/05/01(木) 19:09:33.09ID:X9uChr+40595デフォルトの名無しさん
2014/05/01(木) 19:18:08.61ID:EbX4Dp2dありがとうございます。無事解決しました。
0596デフォルトの名無しさん
2014/05/02(金) 15:34:11.98ID:Y5rKh6pa再びhWnd=CreateWindow()という風に新しいウィンドウを作る事は出来るのでしょうか?
それともhWndというハンドル自体が破棄されるのでしょうか?
スイッチによって子ウィンドウを切り替えるアプリを作ろうとしているのですが、
スイッチを押す度にウィンドウを破棄→生成とする設計にするべきなのか
最初に子ウィンドウを複数作ってスイッチによって見えるウィンドウを変える設計にすべきなのかが判断付かないので質問しました。
どなたかよろしくお願いします。
0597デフォルトの名無しさん
2014/05/02(金) 15:42:03.73ID:mphOrT6X0598デフォルトの名無しさん
2014/05/02(金) 15:45:23.76ID:wOX1O7vl出来ないと思ったのが不思議
0599デフォルトの名無しさん
2014/05/02(金) 16:06:08.20ID:WERRY4DfDXライブラリを使わない場合で
0600デフォルトの名無しさん
2014/05/02(金) 16:09:56.65ID:IdTqtCyu0601デフォルトの名無しさん
2014/05/02(金) 16:20:18.97ID:Y5rKh6paありがとうございます。
0602デフォルトの名無しさん
2014/05/02(金) 16:48:37.49ID:KtmglHA9最初に複数作成
→切り替えは表示非表示
→終了時に破棄
のがスマートと思う
0603デフォルトの名無しさん
2014/05/02(金) 16:50:12.77ID:WERRY4Df代わりに何使えばいいの?
0604デフォルトの名無しさん
2014/05/02(金) 18:50:10.79ID:Y5rKh6paこの関数の第一引数の「デバイスコンテキスト」って何を入れたらいいのでしょうか?
また、文字列の幅を調べたい理由はリストボックスの横スクロールを使いたいと思ったからなのですが、
リストボックスの文字サイズってどうやって取得したらいいのでしょうか?
デフォルトのフォントを調べたところ、高さと幅の数値に0が入っていて自動的にサイズを調整する方式みたいなので困っています。
一度に二つ質問してしまってすみませんがよろしくお願いします。
0605デフォルトの名無しさん
2014/05/02(金) 19:03:24.92ID:IdTqtCyuGetWindowDCで取れる
0606デフォルトの名無しさん
2014/05/03(土) 01:55:01.96ID:ZVBod6nUhoge<char>(str);
}
int hoge(const wstring& str){
hoge<wchar_t>(str);
}
template<class T> int hoge(const basic_string<T>& str){
//処理
}
みたいな書き方はありですか
0607デフォルトの名無しさん
2014/05/03(土) 01:58:49.19ID:Q6/trxkKコンパイルしてみればわかるんじゃないの?
そうじゃないなら、何がわからないのか書いてもらわないと。
0608KUSO KOTE ◆unko./w.Osri
2014/05/03(土) 02:19:35.05ID:tvP1y9zxhttp://ideone.com/6ry1qG
0609デフォルトの名無しさん
2014/05/03(土) 10:35:51.17ID:4EIdW7HCテンプレートより普通の関数優先で合ってる?
0610デフォルトの名無しさん
2014/05/03(土) 11:44:12.05ID:NUO+XoEkWindows プログラミングの「画面描画の基礎」を少し勉強したほうがいい
断片的な知識でやると地雷だらけのバグアプリになる
0611デフォルトの名無しさん
2014/05/03(土) 20:10:03.15ID:lJjp0zKR>>596みたいな事聞いてるんだぞ・・・
ksのksからで
カスじゃなくて基礎な
0612デフォルトの名無しさん
2014/05/04(日) 03:21:49.77ID:StveqMJhどーもです
0613【重要】
2014/05/04(日) 15:17:55.72ID:owW4rydZ万が一hogeが書き込まれても、スルーしてください。
相手にするとあなたも荒らしと同じ扱いになります。
なお、hogeはNGワードに追加しておくことが強く推奨されています。
0614デフォルトの名無しさん
2014/05/04(日) 15:27:20.14ID:0Lb8hh8H0615デフォルトの名無しさん
2014/05/04(日) 16:16:35.49ID:6pFdiYZZってどういう意味あるの?
0616超重要
2014/05/04(日) 16:37:15.78ID:Av6aDk2F日本人は従う必要はありません。
0617デフォルトの名無しさん
2014/05/04(日) 16:37:35.03ID:tByDu0vNpshpack2.hをインクルードファイルサーチパスから探してインクルードする。
0618デフォルトの名無しさん
2014/05/04(日) 19:18:25.75ID:G4bkQ4r/0619超重要
2014/05/04(日) 20:19:26.89ID:Av6aDk2F0620デフォルトの名無しさん
2014/05/04(日) 23:03:47.87ID:vSRu9IqQハゲ乙
0621デフォルトの名無しさん
2014/05/05(月) 04:16:08.27ID:xdFqa6AX貴様が禿げるのは10年早い
0622デフォルトの名無しさん
2014/05/05(月) 12:30:19.69ID:Mu2ScZdD0623デフォルトの名無しさん
2014/05/05(月) 12:55:28.68ID:CN0OEHd5問題ない。
malloc()/free() で free(NULL); が「なにも起こらない」と定義されて以来の伝統だ。
0624デフォルトの名無しさん
2014/05/05(月) 13:01:42.77ID:r55hxj+Y0625デフォルトの名無しさん
2014/05/05(月) 15:54:09.89ID:hsi4q6Aiよう老害
0626デフォルトの名無しさん
2014/05/05(月) 17:29:42.81ID:ic/qAIV8#include <math.h>と記入しているのに
acosh()が未定義になります
使用したい場合はどうすればいいですか?
0627デフォルトの名無しさん
2014/05/05(月) 17:39:11.07ID:SYEvdBak1.2013に替える
2.
#include <math.h>
namespace std{}//他との互換のため
using namespace std;
static double unko = acosh(1.0);
3.
#include <cmath>
static double unko = std::acosh(1.0);
0628デフォルトの名無しさん
2014/05/05(月) 21:05:14.36ID:ic/qAIV8vistaなので1はできない
2,3も未定義と出たのでlog使った式に置き換えて対処しました
ありがとうございました
0629デフォルトの名無しさん
2014/05/05(月) 23:06:39.14ID:KNzAgd/2>acosh()が未定義になります
そりゃmath.hヘッダーはおろか標準ライブラリに
acosh()なんて無いからな
0630デフォルトの名無しさん
2014/05/05(月) 23:26:45.47ID:EsHOP99tいつの時代の人?
0631デフォルトの名無しさん
2014/05/05(月) 23:42:58.99ID:vDmHAviQ> 626 名前:デフォルトの名無しさん[sage] 投稿日:2014/05/05(月) 17:29:42.81 ID:ic/qAIV8 [1/2]
> VC++ 2010 EEを使用してる環境で
0632デフォルトの名無しさん
2014/05/05(月) 23:44:27.04ID:vDmHAviQboostあたりとプリプロセスで切り替えるのが定番なんじゃないの
0633デフォルトの名無しさん
2014/05/05(月) 23:49:12.71ID:vDmHAviQってのはちと適当すぎた
OS、コンパイラ、バージョン、スイッチ、envあたりも見なきゃならんね
0634デフォルトの名無しさん
2014/05/06(火) 00:37:10.49ID:eHTf3NEj/NODEFAULTLIBオプションしか思い当たらない。
0635デフォルトの名無しさん
2014/05/06(火) 06:45:35.64ID:5E8fiGLl0636デフォルトの名無しさん
2014/05/06(火) 07:10:09.00ID:i8DiB40ZISO/IEC 14882:2011およびISO/IEC 9899:1999
で規定されたacoshが無いコンパイラは捨てるしかあるまい
0637デフォルトの名無しさん
2014/05/06(火) 13:07:56.84ID:z8IrcxQC0638デフォルトの名無しさん
2014/05/06(火) 13:18:15.94ID:QzakODtK0639デフォルトの名無しさん
2014/05/06(火) 13:36:05.40ID:mfZzKbLo0640デフォルトの名無しさん
2014/05/06(火) 20:35:42.00ID:WjTWSVZo細かいが
acosh(x) = log(x + sqrt(pow(x, 2) - 1))
だな
0641デフォルトの名無しさん
2014/05/06(火) 21:04:32.72ID:c8YNOPNuついでにそんな奴がWin使いにいるのか?
0642デフォルトの名無しさん
2014/05/06(火) 21:05:50.40ID:0/z9kdsI0643デフォルトの名無しさん
2014/05/06(火) 21:23:54.54ID:WjTWSVZo自由落下とか空気抵抗ありとか
0644デフォルトの名無しさん
2014/05/07(水) 15:46:20.67ID:XxSBZtfo学生?職業プログラマで普通に居るよ 例えば俺とか
別に凄いことでもなんでもない
0645デフォルトの名無しさん
2014/05/07(水) 15:54:16.56ID:s5t2UWqJ0646デフォルトの名無しさん
2014/05/07(水) 18:21:44.52ID:MZ01fZnX0647デフォルトの名無しさん
2014/05/07(水) 22:15:16.82ID:DmN4H+C25年前までは数値演算ならintelかPGIコンパイラと決まっていたんだが、最近MSも追い付いたのか?
0648デフォルトの名無しさん
2014/05/07(水) 23:04:31.89ID:XxSBZtfoまあスピードが必要なところは外部ライブラリ使うことになるけどな
それはVCだろうがICCだろうが同じ
0649デフォルトの名無しさん
2014/05/07(水) 23:15:32.84ID:QqPD6ddYロベールのC++入門本を2週しました。
プログラムはすべて打ち込んで動作確認したり一部改変したりして
学習したのですが、どうしても自作プログラムが書けません。
C言語でしたらプロとして通用するレベル(PG歴9年です)なのですが、
C++でまとまった意味のあるプログラムが書けません。
どのような訓練をすればいいでしょうか?
0650649
2014/05/07(水) 23:17:26.44ID:QqPD6ddY0651デフォルトの名無しさん
2014/05/07(水) 23:32:23.38ID:HeYKw+Nmなんかワロタ
0652デフォルトの名無しさん
2014/05/07(水) 23:44:17.26ID:ZcddfNS50653デフォルトの名無しさん
2014/05/07(水) 23:46:14.07ID:cMom8c9/知ったかクンだろ、スルーしてやれよ
0654デフォルトの名無しさん
2014/05/08(木) 00:33:35.82ID:NSiHhXoSってゆとり開発なら当然だよね。 いまはゆとり開発が主流だしね
0655デフォルトの名無しさん
2014/05/08(木) 00:39:55.71ID:u1P/WjZgオペレーティングシステムと表計算アプリケーションの開発を
提案するんだろうか。
大切な所を購入ソフトに頼るのはゆとりとか言って
0656デフォルトの名無しさん
2014/05/08(木) 00:42:28.50ID:WPnVChLN0657デフォルトの名無しさん
2014/05/08(木) 00:49:58.56ID:NSiHhXoSだれが言っているんだろね
0658デフォルトの名無しさん
2014/05/08(木) 00:55:15.63ID:F90LFLZ7FFTをループのアンローリングしゃうぞー
0659デフォルトの名無しさん
2014/05/08(木) 01:19:39.17ID:WasTJn9bPentium4の時はすごく違ったのになあ
0660デフォルトの名無しさん
2014/05/08(木) 01:41:22.05ID:Ejp4CkYN適当にWikipediaでアーキテクチャ見てみた限り、
分岐予測が改善されたのと、パイプライン段数が減ってるから
予測ミスのペナルティがpentium4ほど大きくないからかな
0661デフォルトの名無しさん
2014/05/08(木) 01:41:26.59ID:/bB+WIRUCでなら書けると言い張るなら、Cで書けばいいじゃん。
どうしてもC++にしたいなら、一度Cで書いてから次の点に留意して書き直してみるとか。
・グローバル変数やデバイスのような単一資源はクラス化する。
・ネームスペースを活用する。
・GPIOのような固定値で表現できる資源はテンプレート関数化する。
いま思いつくのはこんなところかな。
0662デフォルトの名無しさん
2014/05/08(木) 01:42:39.49ID:1wrEfjwT0663デフォルトの名無しさん
2014/05/08(木) 01:43:20.85ID:/bB+WIRUコンパイラに任せれば済むことでは?w
0664デフォルトの名無しさん
2014/05/08(木) 01:47:45.96ID:1wrEfjwT0665デフォルトの名無しさん
2014/05/08(木) 01:52:08.61ID:0ZjLmGKHint id=001;
のように変数に10進数を与えたいのですが、10進数ではなく8進数として判断されてしまいます。
この0から始まる値を10進数として与えるにはどうすればいいのでしょうか。
すみません。よろしくお願いします。
0666デフォルトの名無しさん
2014/05/08(木) 01:53:31.41ID:Oom5aWWV0667デフォルトの名無しさん
2014/05/08(木) 01:53:56.37ID:H5CeDMPH0668デフォルトの名無しさん
2014/05/08(木) 01:58:57.37ID:WPnVChLN用途次第でよくある話じゃない?
0669デフォルトの名無しさん
2014/05/08(木) 02:12:06.73ID:1wrEfjwTC/C++の標準関数を使わなければいけないことのほうが稀
0670デフォルトの名無しさん
2014/05/08(木) 02:34:47.69ID:wkkQdFikだからこそ、ゆとりやドカタでもそこそこのパフォーマンスを出せるものが作れる
0671デフォルトの名無しさん
2014/05/08(木) 02:36:12.22ID:QWFUcZUMint st[10][10]という配列の一行目に、2014050810という値を代入したいのですが
書き方を教えていただけませんか
0672デフォルトの名無しさん
2014/05/08(木) 02:38:43.30ID:o358HCml1行目とは何を指すのか。
配列を行列と見做すのならrow-majorなのかcolumn-majorなのか。
0673デフォルトの名無しさん
2014/05/08(木) 03:39:06.24ID:35TTXgql・「2014050810」が配列の各要素の数字をまとめたものの場合→
素直に1つづつfor文で回してコピーしろよ
・「2014050810」が20億1405万810の場合→
10で割るのと剰余をとるのを繰り返して配列1個づつにコピーしろよ
(注:20億1405万810はint型変数1個にギリギリ入るので、
20億1405万810を配列の各要素に代入したい場合は
for文を回して(ry)
・「2014050810」が文字列(C言語ならchar型の配列)の場合→
'0'を引くとかstrtolとかで数字に変換しろよ
・
0674デフォルトの名無しさん
2014/05/08(木) 05:43:59.23ID:G9NaZtKrおー具体的なアドバイスありがとう!!
そうやってくんだねぇ
0675デフォルトの名無しさん
2014/05/08(木) 09:59:45.58ID:Pn75zzX20676デフォルトの名無しさん
2014/05/08(木) 10:07:10.43ID:JZCmTzL0てっきり1セルに入れる値と思い込んでいた俺のエスパー力はまだまだ未熟
0677デフォルトの名無しさん
2014/05/08(木) 10:08:34.96ID:35TTXgqlcharをintにキャストする場合を忘れてたんだぜ……
0678デフォルトの名無しさん
2014/05/08(木) 11:52:39.17ID:TYDayfT0何方かご教授いただけませんか
よろしくお願いします。
0679デフォルトの名無しさん
2014/05/08(木) 12:22:32.29ID:VQ+BCLxz書式の通りに入力
以上終わり
0680デフォルトの名無しさん
2014/05/08(木) 13:06:23.48ID:ZRNNbMYn0681デフォルトの名無しさん
2014/05/08(木) 13:17:03.32ID:OtdKkzKB洗脳されちゃった人かな
0682デフォルトの名無しさん
2014/05/08(木) 13:26:02.31ID:JZCmTzL0入門書なんかで扱うべき代物ではないな
0683デフォルトの名無しさん
2014/05/08(木) 13:34:16.13ID:SgcQR1UWちゃちゃーっと とりあえず入力するのに使うと
0684デフォルトの名無しさん
2014/05/08(木) 14:13:33.82ID:+RsurlEdゲーム本編のクラスに細かい機能のクラスを追加したかった場合
どのように追加したクラスを本編クラスにくっつけるものなのですか?
本編クラスのメンバーでその追加クラスを生成すれば良いですか?
0685デフォルトの名無しさん
2014/05/08(木) 15:30:14.62ID:muF0Pbbmなるべくstdio.hのライブラリのみで作りたいです。
入力をchar型に入れればいいのは分かるんですが…。
0686デフォルトの名無しさん
2014/05/08(木) 15:32:23.21ID:QETE0hyv0687片山博文MZバグロボ ◆T6xkBnTXz7B0
2014/05/08(木) 16:30:35.39ID:o5H0kOM9本編との共通データと共通インターフェイスを分析せよ。所有、仮想関数、継承などを使う。
0688デフォルトの名無しさん
2014/05/08(木) 16:34:02.02ID:PCqjElIPピラミッドをfor文で作る際にln が段数で
for(i = 1; i <= ln; i++){
for(j = ln - i; j > 0; j--)
{
printf(" ");
}
for(j = i * 2 - 1; j > 0; j--)
{
printf("*");
}
putchar('¥n');
}
のi * 2 -1とかっていうのはパッと見て思いつくものなのでしょうか?
慣れればすぐに思いつけるものなのでしょうか?
0689片山博文MZバグロボ ◆T6xkBnTXz7B0
2014/05/08(木) 17:04:48.57ID:o5H0kOM9数学の等差数列。
0690デフォルトの名無しさん
2014/05/08(木) 17:15:40.82ID:Z/VcgkBH1文字ずつ、0-9の数字かどうか確かめる
そしてそれが、1-3個あればよい
文字列(ascii)から数値(int)へ変換する関数
int atoi( const char *string );
これで数値へ変換できたら、0-999であるか確かめる
>>688
i * 2 - 1 は、1, 3, 5, 7, 9個の、"*"を表示する
なぜ、1, 2, 3, 4, 5じゃダメなのか?
理由はその作者にしかわからない
0691デフォルトの名無しさん
2014/05/08(木) 18:00:18.08ID:97XJLzXo1,2,3,4,5じゃ綺麗なピラミッドにならないだろう。
>>688のコードを実行してみたら分かる
0692デフォルトの名無しさん
2014/05/08(木) 18:03:54.78ID:97XJLzXo他の人に見てもらったら、多分何人かはなんでそういうコードを
思いついたか疑問に思うだろう。
問題解決の道筋は一つとは限らない(最適解はあるだろうが)。
0693デフォルトの名無しさん
2014/05/08(木) 18:07:03.46ID:WPnVChLN結局の所は作者の好みだって言ってるんじゃない?
0694デフォルトの名無しさん
2014/05/08(木) 19:15:36.07ID:m/3Cotp7DotNetZipみたいな便利なのがあればいいのですが。
0695デフォルトの名無しさん
2014/05/08(木) 19:23:32.39ID:jSvCbKd20696デフォルトの名無しさん
2014/05/08(木) 20:08:55.25ID:35TTXgqlそれ言い出したらCの入出力なんて……
>>684
「細かい機能のクラス」ってなんなんだよ……
別にクラスは関数セットってわけじゃねーんだぞ
>>687も「設計しなおせ」(要約)って言ってるわけだし
>>690
atoiにはstdlib.hが要るんですがそれは……
つかstdlib.hにはstrtolがあるんだからそっちを薦めるべき
(宿題で利用できる関数が制限されてたら仕方がないが)
0697デフォルトの名無しさん
2014/05/08(木) 20:19:22.48ID:H5CeDMPHint st[10][10] = { {2, 0, 1, 4, 0, 5, 0, 8, 1, 0} };
としたいんじゃないのか
0698デフォルトの名無しさん
2014/05/08(木) 20:22:44.38ID:iWHr/ksT0699デフォルトの名無しさん
2014/05/08(木) 20:46:26.15ID:WPnVChLN【レス抽出】
対象スレ:【初心者歓迎】C/C++室 Ver.89【環境依存OK】
キーワード:ハッシュ
検索方法:マルチワード(OR)
抽出レス数:0
【レス抽出】
対象スレ:【初心者歓迎】C/C++室 Ver.90【環境依存OK】
キーワード:ハッシュ
検索方法:マルチワード(OR)
698 名前:デフォルトの名無しさん[sage] 投稿日:2014/05/08(木) 20:22:44.38 ID:iWHr/ksT
ハッシュは可逆とか言ってた子まだいるのかなこのスレ
抽出レス数:1
誰がそんな事言ってるの?
0700デフォルトの名無しさん
2014/05/08(木) 21:00:13.61ID:H5CeDMPH0701デフォルトの名無しさん
2014/05/08(木) 21:10:21.35ID:m/3Cotp7ありがとうございます。
zlibというのはDotNetZipみたいにmemory streamに対して
zip/unzip出来るでしょうか?
0702デフォルトの名無しさん
2014/05/08(木) 21:12:31.87ID:QETE0hyv0703デフォルトの名無しさん
2014/05/08(木) 21:15:19.41ID:7Gl9qGxi0704デフォルトの名無しさん
2014/05/08(木) 21:27:39.97ID:dPnVK8av0705デフォルトの名無しさん
2014/05/08(木) 21:27:50.66ID:Oom5aWWV0706デフォルトの名無しさん
2014/05/08(木) 21:45:04.63ID:WPnVChLNそれに使われているのはバリエーションの一部であって
hash(...) { return ... }
こんな受けたものをそのまま生で返すのも
立派なハッシュ関数ですよ
0707デフォルトの名無しさん
2014/05/08(木) 21:51:48.56ID:muBIMt4G0708デフォルトの名無しさん
2014/05/09(金) 00:44:50.53ID:S4GfSN5p詳しく教えて
0709デフォルトの名無しさん
2014/05/09(金) 00:48:46.05ID:Z1SwkjRK雰囲気が違う。
0711デフォルトの名無しさん
2014/05/09(金) 01:00:38.29ID:Z1SwkjRKまじめに雰囲気が違うだけ。
0712デフォルトの名無しさん
2014/05/09(金) 01:04:06.68ID:bHTKjDjb美文書の問題なだけなので、あまり気にしなくても良い気がする。
派生する・されるのはクラス
継承する・されるのはメンバ
ってだけの話。
0713デフォルトの名無しさん
2014/05/09(金) 01:04:08.31ID:ebCqqhjnAと同じBはAの継承
適当だが
0714デフォルトの名無しさん
2014/05/09(金) 02:44:19.51ID:9FYhMONq0715デフォルトの名無しさん
2014/05/09(金) 02:51:35.09ID:Kz50EFWRinherit(派生) と derived(継承した)
と言う用語が使い分けられている。
ついでに"derived"は規格中で特別な用語(10p2)
0716デフォルトの名無しさん
2014/05/09(金) 02:57:51.81ID:1HcIeJu0https://www.youtube.com/watch?v=n2CcU1A1i-0
UFC 134 - エリック・シウバ vs. ルイス・ラモス
https://www.youtube.com/watch?v=x25xIpNmhCo
UFC 140 - コスタ・フィリッポウ vs. ジャレッド・ハマン
https://www.youtube.com/watch?v=etC-LdvIe8A
UFC on Fox 5 - マット・ブラウン vs. マイク・スウィック
https://www.youtube.com/watch?v=HvWDkItV20s
0717デフォルトの名無しさん
2014/05/09(金) 03:08:47.50ID:9FYhMONq逆じゃないの?
http://cpplover.blogspot.jp/2010/11/abstract-class.html
>>712 が正解のようだ
0718デフォルトの名無しさん
2014/05/09(金) 03:15:04.52ID:Kz50EFWR逆だった。
ちなみにinherit(継承)/derive(派生)の使い分けはC++・Java・C#で共通。
0719デフォルトの名無しさん
2014/05/09(金) 03:20:35.70ID:ClmLL0Ax0720デフォルトの名無しさん
2014/05/09(金) 08:25:24.13ID:YiLzwXxLだろ?
雰囲気とか、大丈夫か?
0721デフォルトの名無しさん
2014/05/09(金) 09:41:00.16ID:1s+wO78Fうーん?
0722KUSO KOTE ◆unko./w.Osri
2014/05/09(金) 09:49:18.53ID:tVqxelwX※multiple inheritanceは斜体ではない
つまり多重継承はC++の規格の用語とは違う(たぶん)。
0723デフォルトの名無しさん
2014/05/09(金) 10:53:03.38ID:Mr0Sp7Ii同じシグネチャを持つメンバをそれぞれの親から持ち込んで〜
っていう例の問題を指すんじゃないの?
0724デフォルトの名無しさん
2014/05/09(金) 11:41:52.50ID:MMJKVPjb単にこれシノニムとして読んだんじゃいかんのか。
0725デフォルトの名無しさん
2014/05/09(金) 17:02:14.17ID:Mr0Sp7Ii継承:コンパイラの仕事
0726デフォルトの名無しさん
2014/05/09(金) 17:52:36.71ID:/+k56nAg0727デフォルトの名無しさん
2014/05/09(金) 19:10:33.14ID:PvmHWu+10728デフォルトの名無しさん
2014/05/09(金) 19:11:41.04ID:qXBc1Ng90729デフォルトの名無しさん
2014/05/09(金) 20:40:18.07ID:wsv1Pz2i0730デフォルトの名無しさん
2014/05/09(金) 22:10:43.56ID:THyZXm1s派生 なにかをもとにして新しいものを生み出す
継承 なにかをそのまま受け継ぐ
だからC++では>>712が妥当
0731デフォルトの名無しさん
2014/05/09(金) 23:18:06.60ID:UiWKW0mEまあ、問題無いと思うよ。
C++機能としての意味で使うなら、90%以上の人が継承も派生も同じ扱いな感覚。
0732デフォルトの名無しさん
2014/05/10(土) 14:17:50.12ID:BTCa0fTB日本語で解説してるサイトはありませんでしょうか?
0733デフォルトの名無しさん
2014/05/11(日) 09:08:56.30ID:xlwSJ+ke0734デフォルトの名無しさん
2014/05/11(日) 14:07:47.55ID:C0JfFQ1r立ち上がったコンソールプログラムがすぐに閉じてしまいます。
コンソールプログラム側は「getchar()」or「_tsystem(_T("pause"))」で中断を試みています。
コンソールプログラムを直接立ち上げるとうまくいきます。
_tsystem関数でコンソールプログラムを立ち上げて、
これを開いたままにするにはどうすれば良いですか?
0735デフォルトの名無しさん
2014/05/11(日) 14:24:07.15ID:ttO2ycsK起動するプログラムを開いたままにするように作ればいいだけ
それが嫌なら
1.
std::system(R"(終わったらpauseするバッチリ.bat)");
2.
std::system(R"(cmd.exe /k shine.exe)");
3.
std::system(R"(start shine.exe)");
0736デフォルトの名無しさん
2014/05/11(日) 14:47:34.15ID:wSEeMjm/0737デフォルトの名無しさん
2014/05/11(日) 14:52:50.14ID:t4xw9R/Wsystem("sub\test.exe") が動きません
とか言い出すんだろ?
0738デフォルトの名無しさん
2014/05/11(日) 14:53:21.65ID:C0JfFQ1rありがとうございます。
2の方法でうまくいきました。
0739デフォルトの名無しさん
2014/05/11(日) 17:33:11.46ID:ODutmrkY複数列表示できるコンボボックスをDLLとして作成し、MFCアプリケーション等で使用したいのですが、
VC++で自作のコントロールを作成するにはどうしたらいいのでしょうか?
何か参考になるサイト等ありましたら教えてください。
0740デフォルトの名無しさん
2014/05/11(日) 18:03:07.78ID:3rgSCy+h0741デフォルトの名無しさん
2014/05/11(日) 18:05:01.02ID:c0OeZBBH0742デフォルトの名無しさん
2014/05/11(日) 20:04:39.09ID:5bM6wK/Tプロジェクト新規作成時に選べたと思うが
VS Express だと駄目かもしれない
0743デフォルトの名無しさん
2014/05/11(日) 20:09:05.83ID:ODutmrkYすみません書き方が悪かったです
『コントロールを自作するにはどうしたらいいのでしょうか?』です。
>>742
見てみたのですが、どうやらC#にしかないようです。
0744デフォルトの名無しさん
2014/05/11(日) 20:14:34.75ID:ZWuwy5hlめっちゃ複雑だった気がする
0745デフォルトの名無しさん
2014/05/11(日) 20:29:57.94ID:5s3TJsCSRegisterClassExから説明しなきゃならない感じか?
0746デフォルトの名無しさん
2014/05/11(日) 20:35:08.14ID:4i0nWw5y0747デフォルトの名無しさん
2014/05/11(日) 20:53:12.56ID:ODutmrkYすみませんパッと言われてみて、その辺もよく分かってないです。
ウインドウという概念、コントロールもウインドウだという事、
メッセージの送受信で処理をすること等はなんとなく理解はしているつもりです。
win32プロジェクトでいくつか簡単なプログラムを作成したことがある程度の知識です。
MFCの方はもう少し複雑な処理を書いたこともあり、そちらで複数列のコンボボックスが使用したいと思ったので、
今回なんとか作成できないかと思い、ここで質問させて頂きました。
RegisterClassExについても調べてみたいと思います。
0748デフォルトの名無しさん
2014/05/12(月) 01:14:45.16ID:ZtmTFQ/lMFCのコントロールクラスのはせいのしかた
からやるべきなのか?
0749デフォルトの名無しさん
2014/05/12(月) 18:36:35.66ID:KmN96Zov遅くなってすみません。
MFCのコントロールの派生は大丈夫です。
MFCを使っているので派生して作るのも一つの手だと思ったのですが、
どうせならMFCじゃなくても使えるようにWindowsApiだけで作れたら汎用性があるのかなと思って質問させて頂きました。
とは言え、派生しても複数列ってのが難しくて悩んでいるのですが…。
OwnerDrawを駆使して作成するという認識であっていますでしょうか?
0750デフォルトの名無しさん
2014/05/12(月) 19:05:39.74ID:qQEXXTyXhttp://bbs.wankuma.com/index.cgi?mode=al2&namber=12931&KLOG=28
ここにあるやり方が簡単だよ
0751デフォルトの名無しさん
2014/05/12(月) 19:51:12.16ID:KmN96Zovレスありがとうございます。
見たところ.netでの方法だと思うのですが、
出来れば.netは使わずネイティブで作成したいと思っています。
イメージ的にはC#のコンボボックスでDatatableクラスをコントロールソースにした感じ?が理想です。
配列か何かで複数列のソースを指定するか、列を追加するメソッド等を実装できればと思っています。
0752デフォルトの名無しさん
2014/05/12(月) 20:48:14.29ID:sxPScMrF複数行かと思ってレスしてたわ
複数列ならさらに簡単で
単なるListViewのレポートでイケるでしょ
全列挙して各colを更新し同期すればいいだけ
0753デフォルトの名無しさん
2014/05/12(月) 21:10:09.09ID:KmN96Zov知識不足でおかしなことを言ってしまったらすみません。
コンボボックスの中にリストコントロールを作成するってことでしょうか?
コンボボックス自体は派生してイベント等で独自の処理をする事は経験があるのですが、
OwnerDraw等で独自の描画等の処理はしたことがないので、よく理解できていません…。
0754デフォルトの名無しさん
2014/05/12(月) 21:19:22.64ID:kKPqoo3Yコントロールそのもののハンドルと、選択時ドロップダウン部分が別のウィンドウになってて、
うがーめんどくせー ってなった記憶がある
0755デフォルトの名無しさん
2014/05/12(月) 21:27:22.56ID:KmN96Zov私が作りたいのもドロップダウンなスタイルなのです。
別のウィンドウなんですか…!?
なんだか難しそうですね…C#がとてつもなく簡単に使えるので、
そこまで難しくないのかと勝手に思っていたのですが、かなりややこしそうですね。
色々検索してはみるのですが、出てこないってことはそもそも需要がないのでしょうか?
それともみなさんUIは.Net等で作成されているってことなんでしょうか。
0756デフォルトの名無しさん
2014/05/12(月) 21:35:23.96ID:K6iM2Dlu0757デフォルトの名無しさん
2014/05/13(火) 00:49:36.50ID:P5bQGXnCまったく気にしてなかったけどなんでmakefileとかないのに動いてんの?
教えてエロい人
0758デフォルトの名無しさん
2014/05/13(火) 00:54:44.05ID:fafhaNgG0759デフォルトの名無しさん
2014/05/13(火) 01:41:24.69ID:kDNoyhrO↑ ↑ ↑ ↑ ↑ ↑
0760デフォルトの名無しさん
2014/05/13(火) 02:18:53.08ID:rd0Xfng7http://www.codeguru.com/ にいい感じのがあったら
パクったり好みに合わせていじったりしてる
0761デフォルトの名無しさん
2014/05/13(火) 07:02:10.03ID:Smp1YCMo0762デフォルトの名無しさん
2014/05/13(火) 09:56:10.17ID:I3YIR7QRmakefileより細かい精度でやってる
巨大な管理情報のファイル作ってるだろ
0763デフォルトの名無しさん
2014/05/13(火) 15:20:21.47ID:tyk0IHypWSADATA やWSAStartupなどがコンパイル時にundefinedとなってしまいます
コンパイラはgccをつかっているんですが、これは型が古いせいでしょうか?
0764デフォルトの名無しさん
2014/05/13(火) 15:34:22.46ID:8dff/8hW0765デフォルトの名無しさん
2014/05/13(火) 15:36:53.08ID:tyk0IHypダウンロードしてくるのはできるとして、
どこのディレクトリに?
0766デフォルトの名無しさん
2014/05/13(火) 15:39:26.36ID:8dff/8hW0767デフォルトの名無しさん
2014/05/13(火) 15:40:51.29ID:tyk0IHyp0768デフォルトの名無しさん
2014/05/13(火) 15:46:13.74ID:8dff/8hW古いのをアンインストールした後、最新のMinGW gcc + MSYSをインストールして使え
0769デフォルトの名無しさん
2014/05/13(火) 15:47:24.36ID:tyk0IHyp0770デフォルトの名無しさん
2014/05/13(火) 18:21:16.99ID:+N5p/ipxVS2013でC++のコンソールプロジェクトで以下のように1次元配列のary[200]をnewで確保して、
要素を10個追加して、deleteしています。それを何回も繰り返しています。
これだと上手く行くのですが、コメント化しているcalloc/freeの方法でやると、
同じように動くことは確認したのですが、タスクマネージャで見ていると、
メモリの使用量がどんどん増えていきます。C++ではnew/deleteを使うべきで、calloc/freeは
使わないほうが良いのかもしれませんが、原因がわからないとスッキリしないので、原因教えてください。
#include <vector>
void main()
{
const int rows = 200;
for (int i = 0; i < 1000000; i++){
std::vector<int> *ary;
//ary = (std::vector<int> *)calloc(rows, sizeof(std::vector<int>));
ary = new std::vector<int>[rows];
for (int r = 0; r < rows; r++){
for (int j = 0; j < 10; j++){
ary[r].push_back(j);
}
}
//free(ary);
delete[] ary;
}
return;
}
0771デフォルトの名無しさん
2014/05/13(火) 18:55:03.63ID:w7t3FyZp0772デフォルトの名無しさん
2014/05/13(火) 19:29:16.81ID:+N5p/ipxありがとうございました。デストラクタ呼び出したら解決しました。
ところで、もう一つ教えてください。
calloc(rows, sizeof(std::vector<int>))を
malloc(rows * sizeof(std::vector<int>))に変えると
ビルドできるのですが、実行時にエラーします。理由を教えてください。
0773デフォルトの名無しさん
2014/05/13(火) 19:35:06.68ID:uagFReCc0774デフォルトの名無しさん
2014/05/13(火) 19:46:00.63ID:8dff/8hW0775デフォルトの名無しさん
2014/05/13(火) 19:46:02.70ID:E1rz5Jx8それで説明しているつもりか
0776デフォルトの名無しさん
2014/05/13(火) 19:50:28.75ID:fafhaNgGmalloc/calloc メモリの確保のみ
自分でなんちゃってvectorを実装してみればわかると思うよ
0777デフォルトの名無しさん
2014/05/13(火) 19:50:33.59ID:uJ550Ha4vector< vector<int>* >
でとんな不具合が。
0778デフォルトの名無しさん
2014/05/13(火) 19:51:29.60ID:fafhaNgGまあわかるよね
0779デフォルトの名無しさん
2014/05/13(火) 19:52:56.76ID:uJ550Ha42次元配列確保する部分では、vectorに統一はしている。
0780デフォルトの名無しさん
2014/05/13(火) 20:07:54.53ID:nCUevE/pnewしたものはdelete[]せずにdeleteする
0781デフォルトの名無しさん
2014/05/13(火) 21:24:22.23ID:h2Azkgx10782デフォルトの名無しさん
2014/05/13(火) 21:27:35.75ID:p6Lokthwムーブコンストラクターがある今となっては
レーゾンデートルは皆無
0783デフォルトの名無しさん
2014/05/13(火) 22:03:16.81ID:P5bQGXnCコンパイル速度とか最適化的に
0784デフォルトの名無しさん
2014/05/13(火) 22:08:57.24ID:wFTxwZ90どちらもVSだろうね
0785デフォルトの名無しさん
2014/05/13(火) 22:23:30.72ID:wE5efFNgベンチしてみなされ
0786デフォルトの名無しさん
2014/05/13(火) 23:09:50.87ID:I3YIR7QR比較しようと考えることすらおかしい
0787デフォルトの名無しさん
2014/05/13(火) 23:15:38.37ID:dNR2qCU+Form2Obj = gcnew Form2();
Form2Obj->ShowDialog();
の周りの条件文はどのように書けば良いでしょうか。
ノード1---ノード2
といったもので行っております。
visual studio 2010を使用しています。
0788デフォルトの名無しさん
2014/05/13(火) 23:16:59.41ID:RSJvu3WHC#かVB.NETでやれ
0789787
2014/05/13(火) 23:22:39.78ID:dNR2qCU+調べてみた結果、C#の方が目的は達成できそうですので、
そちらにしようと思いました。
C齧っただけでは、何とかなりませんでしたね。
0790デフォルトの名無しさん
2014/05/13(火) 23:24:29.33ID:wwrEnEuUあんな見えてる地雷よく踏めるもんだ
0791デフォルトの名無しさん
2014/05/13(火) 23:33:35.40ID:h2Azkgx1String^ ←この^ってなによ気に食わん
と思いました
0792デフォルトの名無しさん
2014/05/13(火) 23:39:35.56ID:RSJvu3WHオーストラリアにいてオーストリアにいるというようなものだ
0793デフォルトの名無しさん
2014/05/13(火) 23:51:20.57ID:dNR2qCU+C#で無事できました。ありがとうございました。
0794デフォルトの名無しさん
2014/05/14(水) 00:17:32.28ID:8mu135r/0795デフォルトの名無しさん
2014/05/14(水) 00:24:43.85ID:hD/bpS5RサンプルコードもC#かVB.NETだけなこと多いし何より七面倒臭いだろアレ……
0796デフォルトの名無しさん
2014/05/14(水) 00:56:28.52ID:+eGAQ9pXPascal の真似じゃね?
>>794
2008 か 2010 かは忘れたけど、
C++/CLI だけインテリセンス効かないとか、MS からも継子扱いされてる言語に明日はないと思う。
0797デフォルトの名無しさん
2014/05/14(水) 00:57:14.87ID:emzrQeCt0798デフォルトの名無しさん
2014/05/14(水) 00:57:16.92ID:tdD3kh5P0799デフォルトの名無しさん
2014/05/14(水) 02:09:38.63ID:+eGAQ9pXそういう扱いだってこと。
0800デフォルトの名無しさん
2014/05/14(水) 02:18:23.90ID:emzrQeCtまぁメインで使う言語ではないが
0801デフォルトの名無しさん
2014/05/14(水) 07:55:10.89ID:HVjR+QBFむしろそいつらあるから、存在価値がなくなってるだろ
0802デフォルトの名無しさん
2014/05/14(水) 08:16:54.30ID:/2MvpkXV存在意義がどーのというほど役立たずじゃない
0803デフォルトの名無しさん
2014/05/14(水) 08:43:30.89ID:Y8CCGqOw0804デフォルトの名無しさん
2014/05/14(水) 12:05:44.55ID:HVjR+QBFツールベンダーも軒並みシカトしてるしなぁ
0805デフォルトの名無しさん
2014/05/14(水) 12:17:10.29ID:AZmox6CMC#とかMSだけじゃん、意味ねーしw
0806デフォルトの名無しさん
2014/05/14(水) 17:47:07.40ID:w8WpEYK40807デフォルトの名無しさん
2014/05/14(水) 22:32:10.07ID:1ABMywST客の要望ってw
わざわざC++/CLI指定する客なんてどこにいるんだよ。
普通はC#とC++の資産を併用しなきゃならんときにしぶしぶ使うもんだろ。
0808デフォルトの名無しさん
2014/05/14(水) 22:51:01.75ID:BwmP0C3Sここにいるぞ!
0809デフォルトの名無しさん
2014/05/14(水) 22:55:31.55ID:+QpfAcdH0810デフォルトの名無しさん
2014/05/14(水) 23:16:17.98ID:/LCuFxtMここにもいるぞ!
0811デフォルトの名無しさん
2014/05/14(水) 23:43:50.04ID:HVjR+QBF過去二回あったよ。
て言うかお客さんが
> 普通はC#とC++の資産を併用しなきゃならんとき
の状況になったんだろ。
ちょっと頭があればそれぐらい思い付きそうなもんだが (w
0812デフォルトの名無しさん
2014/05/15(木) 08:57:57.73ID:LD1u0cAx偽はゼロで真はそれ以外! それでなくっちゃな
もろ科学や、科学やで
true and falseなんてのはな、使う奴がバカだとすぐに
「真なるものがあり、そうでないものは偽である」
なんて思っちまう
そりゃ科学じゃねえ、だだの形而上学、神学だ
久々に使ったら
bool flg = 1;
while flg {
....
if (!cont) flg = 0;
....}
は駄目なんだなあ
while (flg)
にしないと。
Schemeの環境モデルで関数オブジェクトを作りフィールド変数を
設定することをC言語だとローカルstatic使えばいいわけだから楽だな。原始的だからわかりやすいし。たとえば
int foo-object (method value) {
static int field1 = 1000;
....}
が
(define foo
(lambda (fielsd1)
(lambda (method value)
.....)))
(define foo-object (foo 1000))
になるようだな
0813デフォルトの名無しさん
2014/05/15(木) 09:28:28.42ID:OyUuOS8eそしてまず日本語として通る文章を書け
0814デフォルトの名無しさん
2014/05/15(木) 09:47:20.71ID:uoR1Pk2Dお薬増やしておきますね
0815デフォルトの名無しさん
2014/05/15(木) 09:50:13.84ID:xTU4tsuP(規格的に「trueは0以外」「false=0」は確定。
つーか真偽専用なんだから普通の数字なんか入れるものじゃない)
もっとも、定義上はfalseの方しか確定じゃないから、判定する論理式の中には
trueよりfalseの方を使った方が安定といえば安定
0816デフォルトの名無しさん
2014/05/15(木) 10:21:24.58ID:Dz76ACJj0817デフォルトの名無しさん
2014/05/15(木) 11:08:45.88ID:OyUuOS8e『true which expands to the integer constant 1,
false which expands to the integer constant 0』
p6.5.9 Equality Operators
『Each of the operators yields 1 if the specified relation is true and 0 if it is false』
printf("%d", (int)(bool)100)
→1
0818デフォルトの名無しさん
2014/05/15(木) 11:27:36.17ID:zU62setbどうもちんぷんかんぷんのようだ
ま、Cでプログラム作る分にはそれでもやれるしな
あはは
さってとじゃね
0819デフォルトの名無しさん
2014/05/15(木) 12:09:03.38ID:8MS98tJI0820デフォルトの名無しさん
2014/05/15(木) 12:38:56.20ID:eNbFmNO2真が1であるというのは
全く異なる
ヌルポインタを評価した場合非ゼロが偽になり得る
0821デフォルトの名無しさん
2014/05/15(木) 12:59:31.94ID:8MS98tJI> 真が1であるというのは
誰もそんなことは言ってないんだが、いきなりどうした?
0822デフォルトの名無しさん
2014/05/15(木) 13:15:27.84ID:B0macvVa0823デフォルトの名無しさん
2014/05/15(木) 13:18:22.40ID:lkL/c86tbool b = (bool)NULL;
bがtrueなる場合がある?
0825デフォルトの名無しさん
2014/05/15(木) 13:44:06.84ID:eNbFmNO2NULLマクロはまた別の話
0826デフォルトの名無しさん
2014/05/15(木) 13:46:07.54ID:k3igCpcm0827デフォルトの名無しさん
2014/05/15(木) 13:48:59.79ID:lkL/c86t>>820の主張を再現する具体的なコードをですね
0828デフォルトの名無しさん
2014/05/15(木) 13:54:18.54ID:eNbFmNO20829デフォルトの名無しさん
2014/05/15(木) 15:16:49.88ID:jWapkBys0830デフォルトの名無しさん
2014/05/15(木) 15:33:59.10ID:dcCiIuDJtrueとfalse は boolen型だから数値では無い。
数値として扱ったら駄目 不具合が出る
0831デフォルトの名無しさん
2014/05/15(木) 15:51:02.11ID:NOa2hkwUbool bFlag;
0.5*bFlag とかするよね
0832デフォルトの名無しさん
2014/05/15(木) 16:08:04.22ID:fPGh8jFP昔はしてたけど今はしなくなった。
0833デフォルトの名無しさん
2014/05/15(木) 17:08:23.03ID:VGaH25Rt何の意味?
0834デフォルトの名無しさん
2014/05/15(木) 17:12:27.88ID:eNbFmNO20835デフォルトの名無しさん
2014/05/15(木) 17:14:48.97ID:+DAA7cFt0836デフォルトの名無しさん
2014/05/15(木) 17:32:45.77ID:5sMFAW9N0837デフォルトの名無しさん
2014/05/15(木) 18:04:54.77ID:aAeHLPhSそれ見たら「今すぐ書いた奴○せ」の目印だから、まあよい。
それを平然と書ける奴は知能の面でいろいろ危険。
オランウータンに刃物持たせるが如し。
0838デフォルトの名無しさん
2014/05/15(木) 18:32:04.24ID:UdRBY7VJ0839デフォルトの名無しさん
2014/05/15(木) 18:41:31.33ID:BKKi1ys9それはないが
bool b = (bool)(void *)NULL;
ならあるな
0840デフォルトの名無しさん
2014/05/15(木) 18:47:31.92ID:4Th7kZ7Efalse や 0 や nil が同じ意味で使われかつ利用するライブラリやインタプリタの種類によって使い分けなきゃならん言語も有るし。
0841デフォルトの名無しさん
2014/05/15(木) 19:07:36.74ID:3a5kleH6bool b = false;
b++;
って無かったか?
何がしたいのかさっぱりわからなかった
0842デフォルトの名無しさん
2014/05/15(木) 19:12:17.42ID:1iZpvHMh0843デフォルトの名無しさん
2014/05/15(木) 19:54:46.02ID:KjqXcag5b = true;
上の方が早い希ガス
0844デフォルトの名無しさん
2014/05/15(木) 19:59:14.56ID:UdRBY7VJ0845デフォルトの名無しさん
2014/05/15(木) 20:12:31.70ID:NOFxC8X3x86だとバイト数変わらん。
RISC系だと性能差出るかも。
0846デフォルトの名無しさん
2014/05/15(木) 20:13:27.00ID:0ut8wgYAプロセスB上でプロセスAから取得した構造体aのポインタからメンバを読もうとすると
アクセス違反で終了してまいます。
0847デフォルトの名無しさん
2014/05/15(木) 20:23:38.01ID:Uxynwd2i共有メモリとか名前付きパイプとかメールスロットとか
環境にもよるが,shared memory で調べてほしい
「プロセス」ごとに独自のメモリ空間をもっているのが普通
c# スレで話題になったね,C/C++ 流がボコボコにされていました,アハハ
0850デフォルトの名無しさん
2014/05/15(木) 21:44:24.14ID:nx9ZCNV+0851デフォルトの名無しさん
2014/05/15(木) 22:39:00.54ID:em21x65l配列みたいに i=0からvector.size()まで vector[i]でループするのと、
何か違いがありますか?
0852デフォルトの名無しさん
2014/05/15(木) 22:43:34.33ID:1iZpvHMh0853デフォルトの名無しさん
2014/05/15(木) 22:43:56.77ID:BJANWS4Pどうしてそう、息を吸って吐くように嘘が出てくるのか
0854デフォルトの名無しさん
2014/05/15(木) 22:52:00.19ID:KjqXcag50855デフォルトの名無しさん
2014/05/15(木) 23:19:19.73ID:qq5GNXVQ0856デフォルトの名無しさん
2014/05/15(木) 23:31:24.43ID:gSHCworeそれもない
ポインタを真偽値に変換したらnullポインタは必ずfalse になる。
Cスタイルキャストじゃなくてreinterpret_castを使ったら意図通りにnullポインタが0でない処理系を判別できる。
bool b=(uintptr_t)((void*)0);
こうでもいい。
まあ、nullポインタが0でない処理系なんて使ったことありませんけど。
0857デフォルトの名無しさん
2014/05/15(木) 23:34:03.27ID:gSHCworeループの最中に要素の追加などをした場合イテレータは無効になる場合がある。
0858デフォルトの名無しさん
2014/05/15(木) 23:48:47.76ID:H8RGlgHKつ OS/9
実記憶なOSはまだあるのよ
0859デフォルトの名無しさん
2014/05/16(金) 00:09:52.38ID:cZLVKnpq???実記憶であることとnullの値は関係ないだろ
OS/9って本当にnull≠0なの?
0860デフォルトの名無しさん
2014/05/16(金) 00:14:52.82ID:fgvpMRFf0861デフォルトの名無しさん
2014/05/16(金) 01:15:58.75ID:QoHSVP+W> Cスタイルキャストじゃなくてreinterpret_castを使ったら意図通りにnullポインタが0でない処理系を判別できる。
> bool b=(uintptr_t)((void*)0);
そんな保証もないよ。
0862デフォルトの名無しさん
2014/05/16(金) 01:31:09.41ID:poypvy+o朝鮮人だからさ
いにしえから,そう,まだ void がなかったころは,execl() の類の可変長引数の最終引数は (char *)NULL と書くのが儀式だった‥
0864デフォルトの名無しさん
2014/05/16(金) 05:16:27.43ID:5aDVfyXgなにが言いたいのか
0865デフォルトの名無しさん
2014/05/16(金) 20:26:00.99ID:+KheQSD1...
};
を定義して、使う時に
MyClass *p = new MyClass();
MyClass mc = MyClass();
のように、どちらの方法でも使えると思いますが、何か違いはありますか?
0866デフォルトの名無しさん
2014/05/16(金) 20:32:22.36ID:4xC78i9Iブロック抜けたら無効
0867デフォルトの名無しさん
2014/05/16(金) 20:40:08.50ID:igo/DCLEとりあえずもう言われてるけど寿命が全然違う
0868デフォルトの名無しさん
2014/05/16(金) 22:18:12.13ID:+KheQSD1ありがとうございました。
0869デフォルトの名無しさん
2014/05/17(土) 01:38:37.64ID:J6oJMsTV>MyClass mc = MyClass();
>のように、どちらの方法でも使える
コムパイルが通る可能性は無くはないが
一時オブジェクトを作ってそれをもとにもう一つ作るなど無駄。
比較すべきは
MyClass mc;
0870デフォルトの名無しさん
2014/05/17(土) 02:34:46.79ID:CIZJhZT4MyClass *p = new MyClass();
(略)
return p;
}
MyClass &Hoge(){
MyClass &mc = MyClass();
(略)
return mc;
}
どっちが良いですか?
0871デフォルトの名無しさん
2014/05/17(土) 02:38:26.29ID:C8xivB5g0872デフォルトの名無しさん
2014/05/17(土) 02:54:38.71ID:LcRmehIv下は動かないので上の方がいい
MyClass Hoge(){
MyClass mc;
(略)
return mc;
}
0873デフォルトの名無しさん
2014/05/17(土) 03:29:06.20ID:QenhlCSVID:LcRmehIv
ID:CIZJhZT4
0874デフォルトの名無しさん
2014/05/17(土) 06:38:58.51ID:lmWxNHfJそれ一時オブジェクト作られるんだっけ?
0875デフォルトの名無しさん
2014/05/17(土) 06:46:46.31ID:kpm9Xhi5上のやり方は戻り値を自前で破棄しないといけないことに気付いているのか?
どっちがいいと聞いてくる時点で同等に思っているっぽいけど
0876デフォルトの名無しさん
2014/05/17(土) 07:05:55.68ID:ywqXIraQこれでいいのかな
MyClass* Hoge(){
MyClass mc;
(略)
return &mc;
}
0877デフォルトの名無しさん
2014/05/17(土) 07:11:09.67ID:kpm9Xhi5それ、なにもかえってこないぞ多分
0878デフォルトの名無しさん
2014/05/17(土) 07:13:44.44ID:L07S2pKr>>872に正しいコードが書いてあるのにどうして読まないの?
MyClass Hage(){
MyClass mc;
return mc;
}
または
MyClass * Hage(){
MyClass * pmc = new MyClass();
return pmc;
}
または
std::unique_ptr<MyClass> Hage(){
std::unique_ptr<MyClass> sumapo(new MyClass());
return sumapo;
}
0879デフォルトの名無しさん
2014/05/17(土) 07:18:29.49ID:ywqXIraQ勘違いしてた
そっかHogeがオワタ時点でmcは破棄されるのか
俺アホすぎワロスwww
0880デフォルトの名無しさん
2014/05/17(土) 09:07:39.51ID:bRcULvwX0881デフォルトの名無しさん
2014/05/17(土) 10:52:45.13ID:v/pj/1aT0882デフォルトの名無しさん
2014/05/17(土) 11:42:39.80ID:+rGJT6dM0883デフォルトの名無しさん
2014/05/17(土) 11:48:10.75ID:nwVOk95Q0884デフォルトの名無しさん
2014/05/17(土) 12:11:11.90ID:Ut3rni4+0885デフォルトの名無しさん
2014/05/17(土) 12:30:18.64ID:YgdJ98+vNumA×NumBの配列のポインタを用意する記述として
b=malloc(sizeof(int*)*NumA);
for(int i=0;i<5;i++){
b[i]=malloc(sizeof(int*)*NumB);
}
みたいな記述を見つけたんだけど、これってやろうと思えば
b=malloc(sizeof(int*)*NumA);
for(int i=0;i<5;i++){
b[i]=malloc(sizeof(int*)*(i+1));
}
みたいにb[i]に割り当てる配列のサイズをバラバラにしたりとかできんの?
誰かよろ
0886デフォルトの名無しさん
2014/05/17(土) 12:32:14.52ID:pDUyUp0N0887デフォルトの名無しさん
2014/05/17(土) 12:36:33.17ID:R4olBPWVもちろんオーケー
と言うか*argv[]とかモロその発想だろ
0888デフォルトの名無しさん
2014/05/17(土) 12:57:40.26ID:v/pj/1aT0889デフォルトの名無しさん
2014/05/17(土) 14:01:43.36ID:YgdJ98+vサンクス
0890デフォルトの名無しさん
2014/05/17(土) 14:18:12.91ID:YgdJ98+vstruct a{
int b;
char c[10];
};
struct a d[8];
ってなってる時に
e=sizeof(d);
ってした場合、e=8になる?それともdの中の変数bや配列cもカウントされて別の数値になる?
0891片山博文MZバグロボ ◆T6xkBnTXz7B0
2014/05/17(土) 14:24:18.57ID:n6eabQOqになるね。
0892デフォルトの名無しさん
2014/05/17(土) 14:41:29.86ID:R4olBPWVhttp://codepad.org/LSMsmSGR
0893デフォルトの名無しさん
2014/05/17(土) 14:42:57.45ID:YgdJ98+vsizeof(struct a)によって数値が変化するのか
ってーことはもし
struct a{
int b;
char *c;
};
struct a *d;
っていう構造体でdをNumA個の配列、b=0、cをNumB個の配列にしたい時は
d=malloc(sizeof(a*)*NumA);
for(i=0;i<sizeof(d)/sizeof(struct a);i++){
d[i].b=0;
d[i].c=malloc(sizeof(char*)*NumB);
}
ってすればおk?
0894デフォルトの名無しさん
2014/05/17(土) 14:47:29.21ID:d2QcpThlそこには内部のデータへのアクセスは最小限にするべきと書いてありました。
例えば分数クラスがあるとするじゃないですか。分数クラスに足し算メソッドを入れるのは
間違ってますか?分母と分子を取り出して計算してまた入れれはいいのですから。
この考え方についてどう思いますか?
0895デフォルトの名無しさん
2014/05/17(土) 14:55:03.35ID:R4olBPWVsizeof演算子は、ポインタ相手に使うとポインタのサイズを返す。
つまり、mallocでどれだけ確保したかはsizeofでは分からない。
(http://www.kis-lab.com/serikashiki/C/C03.html)
書き直すとしたらこんな感じ?
http://codepad.org/6bSDZA3q
0896デフォルトの名無しさん
2014/05/17(土) 15:00:25.69ID:R4olBPWV間違ってるとは言わないけど、その書き方だと例えば
fraction a(1, 3), b(1, 2); //コンストラクタで代入。仮に「1/3」「1/2」の意味とする
a.plus(b); //「a = a + b」の意味
みたいな書き方になるよ?
でも分数なんだから、普通に演算子のオーバーロードを使って
a += b; //「a = a + b」の意味
みたいに書ける方が楽じゃない?
0897デフォルトの名無しさん
2014/05/17(土) 15:02:27.20ID:d2QcpThlpuls(a,b)です。
aにa+bが入ります。
0898デフォルトの名無しさん
2014/05/17(土) 15:02:56.87ID:bRcULvwX0899デフォルトの名無しさん
2014/05/17(土) 15:05:10.17ID:d2QcpThlvoid operator+=(fraction a, fraction b);
のような関数を定義します。
0900デフォルトの名無しさん
2014/05/17(土) 15:12:24.48ID:R4olBPWVそれメソッド(メンバ関数)じゃなくてただの関数だろ……
大体>>899で「operator+=」って書けるってことはさては知ってて聞いたか?
「内部のデータへのアクセスは最小限に」はそりゃそうだけど、
分数クラスで分子・分母に(メンバ関数などを通じて)アクセスするのは普通じゃん
分かりやすい例で行けば<complex>とかがそうだ
0901デフォルトの名無しさん
2014/05/17(土) 15:36:28.47ID:d2QcpThl偏角と絶対値の場合があるじゃないですか?
もしメソッドにしてしまうと、内部表現を変えたら
すべてのメソッドも書き換える必要がありますよね。
でも関数なら書き換える必要がない。
というのが内部のデータのアクセスを最小限にする理由ですよね。
0902デフォルトの名無しさん
2014/05/17(土) 16:08:20.96ID:TQ+XKlgi>でも関数なら書き換える必要がない。
それ、どんな魔法?
0903デフォルトの名無しさん
2014/05/17(土) 16:29:01.04ID:AqxEZVXMグローバル変数と同じ問題を抱えることになるから気をつけましょうみたい
な極々単純な話なんじゃねーの?
0904デフォルトの名無しさん
2014/05/17(土) 19:53:40.98ID:viiN1KUU0905デフォルトの名無しさん
2014/05/17(土) 20:27:30.97ID:te2IP1pO0906デフォルトの名無しさん
2014/05/17(土) 20:36:51.33ID:uX7tOWvA> そこには
(クラスの外から)
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
> 内部のデータへのアクセスは最小限にするべきと書いてありました。
なので、>>897 とかはよろしくない。
0907デフォルトの名無しさん
2014/05/17(土) 21:34:39.66ID:te2IP1pO0908デフォルトの名無しさん
2014/05/17(土) 22:20:05.29ID:v/pj/1aT0909デフォルトの名無しさん
2014/05/17(土) 22:40:44.35ID:kpm9Xhi50910デフォルトの名無しさん
2014/05/18(日) 00:36:49.59ID:BExb4OPW無理にpublicでやろうとすると、かえって内部が丸出しになっちゃって
いっそfriendにしたほうが、結果的に公開する情報を減らせることはあるね
まあ、それでも最後の手段にしたいのは事実だが…
0911デフォルトの名無しさん
2014/05/18(日) 00:39:37.00ID:eV8xCOTG0912デフォルトの名無しさん
2014/05/18(日) 00:41:20.73ID:c000QlqK0913デフォルトの名無しさん
2014/05/18(日) 01:29:18.46ID:l5ZUM/Mk0914デフォルトの名無しさん
2014/05/18(日) 11:34:57.00ID:IQqucOU+0915デフォルトの名無しさん
2014/05/18(日) 11:48:06.02ID:uF8ItM3eポインタってどこかに用意した変数やら配列やらへのワープゾーンみたいなもんだと認識してるけど
int *a;;
a=(int*)malloc(sizeof(int*)*10;
って感じにaに10個の配列を用意した時に
int *b;
b=a;
ってやったらaに入ってたワープゾーンだけがbに入るの?それともaのワープゾーンにリンクしてた配列までコピーされるの?
せんせー教えてください
0916デフォルトの名無しさん
2014/05/18(日) 11:49:57.38ID:BRQ2ZbHh0917デフォルトの名無しさん
2014/05/18(日) 11:50:50.44ID:l5ZUM/Mk0918デフォルトの名無しさん
2014/05/18(日) 11:51:16.38ID:uF8ItM3e0919デフォルトの名無しさん
2014/05/18(日) 11:53:39.52ID:jESs8rMMまず、ワープゾーンじゃないから訂正して学ぶように。
> リンクしてた配列までコピーされるの?
それがどこにコピーされると思う?
どこに?
あと、printf("%p", a)してみたり、
sizeof演算子でいろいろサイズみてみたりすると、
ポインタなるものが何なのかすぐ分かると思うよ。
0920デフォルトの名無しさん
2014/05/18(日) 12:09:53.18ID:eV8xCOTGすぐ判ると思うのだが?
0921デフォルトの名無しさん
2014/05/18(日) 12:33:24.21ID:B6nRembq0922デフォルトの名無しさん
2014/05/18(日) 13:19:55.42ID:vXasxGe8> a=(int*)malloc(sizeof(int*)*10;
仮免もやれんレベル
死ね
0923デフォルトの名無しさん
2014/05/18(日) 14:40:57.61ID:e7YN7e31アセンブラソース読める奴がこんな質問するわけねーだろw
0924デフォルトの名無しさん
2014/05/18(日) 14:48:52.30ID:BMv+P6U/0925デフォルトの名無しさん
2014/05/18(日) 15:11:36.79ID:l5ZUM/Mk0926デフォルトの名無しさん
2014/05/18(日) 15:21:56.40ID:739gnFQ4生成された子プロセス側から親プロセスの「プロセス継承」であるのを知るにはどうすれば良いでしょうか?
0927デフォルトの名無しさん
2014/05/18(日) 15:31:32.83ID:oE4mJBDfここで訊け
Win32API質問箱 Build117
http://toro.2ch.net/test/read.cgi/tech/1394156278/
0928デフォルトの名無しさん
2014/05/18(日) 15:34:19.72ID:BMv+P6U/ちなみに、親が開いた「各オブジェクトのハンドル」の継承やがな
0929デフォルトの名無しさん
2014/05/18(日) 22:26:47.45ID:ryRL0MNjにある
//(2)プロトタイプ宣言
void sumup(int m, int n, int data[m][n]);
void sumup(int m, int n, int data[*][*]);
void sumup(int m, int n, int data[ ][*]);
void sumup(int m, int n, int data[ ][n]);
これって正しいですか?
関数の引数が2次元配列の場合、こういうふうにプロトタイプ宣言出来るんですか?
0930デフォルトの名無しさん
2014/05/18(日) 22:44:59.09ID:BRQ2ZbHh0931デフォルトの名無しさん
2014/05/18(日) 23:24:37.39ID:oxq+ikAOあら
f(int m, int n, int a[m][n]) ならC99からは宣言も定義も可能なんだね
前回の質問にalloca()を使えとか、間違えて答えてしまった‥ごめんね
https://ideone.com/4Kq0MQ
0932デフォルトの名無しさん
2014/05/18(日) 23:31:42.19ID:untGUeAUググってもよく分からなかったんだが、[*][*]っていつからできるようになったの?
C99から
0934デフォルトの名無しさん
2014/05/19(月) 00:08:12.45ID:/174+P6q0935デフォルトの名無しさん
2014/05/19(月) 00:22:56.96ID:mLyDgbnZサンプルありがとうございます。
VS2013ではコンパイル出来ないのですが、C99対応していないのでしょうか?
0936デフォルトの名無しさん
2014/05/19(月) 00:25:01.41ID:pLiUIlla上のやつはまだ
0937デフォルトの名無しさん
2014/05/19(月) 00:28:32.28ID:jgU9zwCb需要もないんだろうけど。
0938デフォルトの名無しさん
2014/05/19(月) 00:31:30.14ID:jgU9zwCb0939デフォルトの名無しさん
2014/05/19(月) 00:42:03.18ID:pLiUIlla0940デフォルトの名無しさん
2014/05/19(月) 01:08:22.63ID:UDyOnYKb俺もそう思う。
CはC++のCで十分って感じだろう。
0941デフォルトの名無しさん
2014/05/19(月) 07:59:49.29ID:k5xxXzF6「C++のC」って何?
0942デフォルトの名無しさん
2014/05/19(月) 08:03:37.20ID:zHXgCe3Lそれなりに対応してきてるけど C++ の方が優先度高いだろうし、その C++ からしていまいちだし...
0943デフォルトの名無しさん
2014/05/19(月) 08:24:37.69ID:YdMb7M2Q0944デフォルトの名無しさん
2014/05/19(月) 08:39:30.94ID:JapMjw/D拡張子 .c のファイルのコンパイルとか?
0945デフォルトの名無しさん
2014/05/19(月) 08:44:09.77ID:ajnPgsUXWin32くらいだからいまさら新しい規格に対応する必要性など感じていないんだろう。
0946デフォルトの名無しさん
2014/05/19(月) 09:04:09.90ID:mxK7K6eGそれコンパイラがC用に切り替えること多くね?
まあ厳密にはC言語⊂C++ではないが
0947デフォルトの名無しさん
2014/05/19(月) 10:47:28.53ID:yPaRcm/E0948デフォルトの名無しさん
2014/05/19(月) 10:58:20.13ID:72vGXIcKkwsk
0949デフォルトの名無しさん
2014/05/19(月) 11:26:22.43ID:tHtfoV9lMS的にはうまみがない
0950デフォルトの名無しさん
2014/05/19(月) 13:57:08.03ID:xXRUxTPj割とマジで
0951デフォルトの名無しさん
2014/05/19(月) 14:01:24.69ID:/174+P6qFAQに書いてあるし
0952デフォルトの名無しさん
2014/05/19(月) 19:48:22.58ID:00Yp1Qbf正直いって逐次指定な配列を言語仕様に取り込むとか C99 は狂っているとしか
C89 でもう十分
0953デフォルトの名無しさん
2014/05/19(月) 20:09:26.01ID:6L2g2kAx0954デフォルトの名無しさん
2014/05/19(月) 20:41:37.56ID:u0kYoYP8new で生成したわけじゃないのに delete が必要だったり
new で生成したのに delete が必要なかったり
なんてことはある?
0955デフォルトの名無しさん
2014/05/19(月) 20:45:35.65ID:pLiUIlla0956デフォルトの名無しさん
2014/05/19(月) 20:48:07.32ID:Tviwz+y5ただし必ずしも自分でdeleteを書かなければいけないわけではない
スマートポインタに自動的に解放してもらうとかできる
0957デフォルトの名無しさん
2014/05/19(月) 21:00:02.55ID:tHtfoV9l原則はそうだけど
new は僕がやるけどdeleteは君がやってねとかいうライブラリの関数はザラにあるし
範囲を抜けたら暗黙にdeleteを呼ぶ偽ポインタもある
0958デフォルトの名無しさん
2014/05/19(月) 21:08:36.75ID:6L2g2kAx0959デフォルトの名無しさん
2014/05/19(月) 21:25:23.22ID:OdEJnfIS0960デフォルトの名無しさん
2014/05/19(月) 21:43:06.04ID:9fJb4fn7何故ここでファサードが関係?
0961デフォルトの名無しさん
2014/05/19(月) 23:05:59.04ID:HIpocQh2https://ideone.com/rYzSkg [1]
二つのクラスがそっくりなので一緒にしたいと考えています.
https://ideone.com/uvxS69 [2]
このようにしたいのですが,宣言されてないよ!のエラーが出てしまいます
[1]はどうすれば統一できるでしょうか
0962デフォルトの名無しさん
2014/05/19(月) 23:25:07.62ID:/174+P6q0963デフォルトの名無しさん
2014/05/19(月) 23:38:03.44ID:HIpocQh20964デフォルトの名無しさん
2014/05/20(火) 01:57:58.65ID:lOxlpScD問題が再現する最小のコードを貼れ
0965デフォルトの名無しさん
2014/05/20(火) 07:41:27.49ID:2b9b8/290966デフォルトの名無しさん
2014/05/20(火) 07:57:00.60ID:LPSd8BiOテンプレート初心者なのですが、このクラスを使うときには
どんな風に記述するのでしょうか?
0967デフォルトの名無しさん
2014/05/20(火) 08:16:14.35ID:Lchk77nYとか
using NTimer = Timer<std::chrono::sys_clock>;
ってどういう意味?初めて見るんだけど…
俺の持ってるオライリーランゲージクイックリファレンスにも載ってないし(´・ω・`)
0968デフォルトの名無しさん
2014/05/20(火) 08:44:37.30ID:F/Uvd5NG11からの機能だからな
0969デフォルトの名無しさん
2014/05/20(火) 09:32:45.61ID:ZFteYQ7B0970デフォルトの名無しさん
2014/05/20(火) 20:40:05.67ID:gnNGvPv6ただのalias-declaration
0971デフォルトの名無しさん
2014/05/20(火) 21:00:50.26ID:eMXV5lE3どうやって、いらなくなったデータをいらないって判断してるの?
あと解放するタイミングはいつ?
0972デフォルトの名無しさん
2014/05/20(火) 21:02:20.04ID:+6kjiTDf0973デフォルトの名無しさん
2014/05/20(火) 21:14:45.43ID:XZ8PbsoHふつうは参照カウント
>>972
それはガペコレでもないと無理
0974デフォルトの名無しさん
2014/05/20(火) 21:20:27.36ID:JuF8aFg1スマートポインターがスコープを抜けることで解放
0975デフォルトの名無しさん
2014/05/20(火) 21:24:01.05ID:fbMM1sIr0976デフォルトの名無しさん
2014/05/20(火) 22:48:56.71ID:nd0ZvrXw0977デフォルトの名無しさん
2014/05/20(火) 22:49:36.19ID:nd0ZvrXw0978デフォルトの名無しさん
2014/05/20(火) 22:55:47.91ID:fbMM1sIr普通はすぐに処理して速やかに手放す
つかみっぱなしにする場合はきちんと仕様を確認する
ライブラリなんかだとそういう制約はドキュメントに書いてあるはず
0979デフォルトの名無しさん
2014/05/20(火) 22:59:01.69ID:nd0ZvrXw0980デフォルトの名無しさん
2014/05/20(火) 23:01:55.95ID:LPSd8BiOusing namespace std;
class myBase{
public:
virtual void method(){
cout << "myBaseMethod" << endl;
};
};
class myClass:public myBase{
public:
virtual void method() override{
cout << "myClassMethod" << endl;
};
};
void main(){
myBase *pmb = new myClass();
pmb->method();
myBase mb = myClass();
mb.method();
}
これ実行すると
myClassMethod
myBaseMethod
と出るんですが、どうして二番目の方法ではoverrideできないのでしょうか?
数時間悩んだのですが分りません。ポインタを使わないとoverrideできない
のでしょうか?
0981デフォルトの名無しさん
2014/05/20(火) 23:03:10.25ID:fbMM1sIr0982デフォルトの名無しさん
2014/05/20(火) 23:03:31.52ID:nd0ZvrXw0983デフォルトの名無しさん
2014/05/20(火) 23:05:09.20ID:BF5AHSiomyClass mc;
myBase &mb = mc;
0984デフォルトの名無しさん
2014/05/20(火) 23:10:53.39ID:nd0ZvrXwmyBase mb(myClass());
でコピーコンストラクタが呼ばれるから
0985デフォルトの名無しさん
2014/05/20(火) 23:18:17.77ID:Dt1y8HrxこれだけでmyBaseの実体ができる
これに何を代入してもmbはmyBaseのまま
構造体としてのデータのコピーが起こるだけ
参照じゃないところがJAVAやC#と違うところだよね
0986デフォルトの名無しさん
2014/05/20(火) 23:30:46.78ID:uQLrwk2U> それはガペコレでもないと無理
意味がわからん、なんのための参照カウンタなんだ?
0987デフォルトの名無しさん
2014/05/20(火) 23:38:06.92ID:jIyo6zRD参照カウント方式てのは
いくつかあるGC実装のなかの一つだよ
0988デフォルトの名無しさん
2014/05/20(火) 23:44:23.11ID:j4b0wmFL自然とマークアンドスイープが浮かぶ
0989デフォルトの名無しさん
2014/05/20(火) 23:50:20.20ID:LPSd8BiOmyBase &mbr = myClass();
mbr.method();
と書き換えたらoverrideできました。
でもまだよく分らないのですが、
> myBase mb;
> これだけでmyBaseの実体ができる
> これに何を代入してもmbはmyBaseのまま
> 構造体としてのデータのコピーが起こるだけ
データのコピーが起こったらmbの実体がmyClassに変わるのではないですか?
その結果、myClassのMethod()が呼び出されると思ったのですが。
0990デフォルトの名無しさん
2014/05/21(水) 00:02:46.66ID:U29LvGvw0991デフォルトの名無しさん
2014/05/21(水) 00:03:18.97ID:nM6Mwf45これをスライシングという
後myBase &mbr = myClass();だとmbrの実体が破棄されてしまうのでいけない
別に実体を確保しておくかconst参照を使うべき
0992デフォルトの名無しさん
2014/05/21(水) 00:07:39.63ID:zBFBEF37std::shared_ptr も GC って言っちゃうの?
0993デフォルトの名無しさん
2014/05/21(水) 00:08:04.36ID:g8mAFBUR俺はGCと言われると参照カウント・マーク&スイープ両方備えてるイメージを持つなー
0994デフォルトの名無しさん
2014/05/21(水) 00:08:37.39ID:U29LvGvw0995デフォルトの名無しさん
2014/05/21(水) 00:16:24.91ID:1n+UZynxクラスを継承使用って思ったら、*扱うって思っとけばいいのに。
クラスインスタンスを関数間で渡したかったら*で渡すって思ってたらいいのによお。
俺はうまく説明できんが、
c++ スライシングでggればわかる、とは思えないが一応キーワードだけ教えとく。
あとは、コピーコンストラクタだな。
http://amuraba.blog.fc2.com/blog-entry-113.html
http://www.xlsoft.com/jp/products/intel/compilers/ccw/12/pt_reference/pt_reference/references/sc_cpp_slicing_name.htm
0996デフォルトの名無しさん
2014/05/21(水) 00:24:19.41ID:JxdWfYNy0997デフォルトの名無しさん
2014/05/21(水) 00:25:18.56ID:U29LvGvw0998デフォルトの名無しさん
2014/05/21(水) 00:35:16.35ID:WX3/dXSq言っちゃうよ
O(1)の配列だってhashのバリエーションだしな
0999デフォルトの名無しさん
2014/05/21(水) 00:38:39.18ID:W2g5L2xsはあ、そうですか
1000デフォルトの名無しさん
2014/05/21(水) 00:47:46.18ID:7hPk5/6F10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。