- 1 名前:デフォルトの名無しさん [2006/11/29(水) 17:00:54 ]
- このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。 Visual C++使いが優しくコメントを返しますが、 お礼はVisual C++の布教と初心者の救済をお願いします。 ■過去スレ 前スレ pc8.2ch.net/test/read.cgi/tech/1150105712/ 前々スレ pc8.2ch.net/test/read.cgi/tech/1141087248/ ■遠い親戚スレ くだすれC++/CLI(初心者用) pc8.2ch.net/test/read.cgi/tech/1142144110/l50 ■関連ページ Visual C++ Home Page www.microsoft.com/japan/msdn/visualc/
- 458 名前:453 mailto:sage [2007/03/30(金) 07:55:11 ]
- すみません、自分で読み直してみて、一度に質問を書き込みすぎました。
でも、皆さん親切に教えていただけるので、とても嬉しいです(;;)
- 459 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 09:04:24 ]
- 微妙に回答のポイントがずれてる希ガス
- 460 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 10:36:22 ]
- じゃ、簡潔に。
>ctrl+F5(デバッグなし)で実行すると、ウィンドウが表示されたままに >なるのは何故なんでしょうか。 仕様です。 >また、DOS窓でなく、通常のウィンドウへの描画は >どのような手順で行うのが簡潔でしょうか。 WinAPIを使えばできますが、その為には先ず一通りCの知識が必要になります。
- 461 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 10:40:20 ]
- EEなら該当スレみつけてSDKインストール
- 462 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 10:50:54 ]
- >また、DOS窓でなく、通常のウィンドウへの描画は
>どのような手順で行うのが簡潔でしょうか。 まとめると (1)MicrosoftのサイトからPlatformSDKをダウンロードしてインストール (これでWin32APIを使うことができる) (2)ウィンドウ作成 (Win32APIはmainの代わりにWinMainを使う) (3)ウィンドウに文字を出力
- 463 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 11:07:35 ]
- >通常のウィンドウへの描画は...
通常のウィンドウをどうやって作るかにもよるんだけど 1. Win32(C or C++) 基本だけど全てを自分でやる必要がある。 2. MFCアプリ(C++) MFCが多くのことをやってくれるけど、構造の理解に時間がかかる。 3. CLRのWindowsフォームアプリ(C++/CLI) 上の二つとは異質だけど初心者には楽。いわゆるドットネット。 他にも選択肢はあるけど、普通はこの3択。誘導される前のスレッドを見る限り VC8EEなんだろうな。その場合2は選択できない。1を選ぶなら>>462で。 プロジェクトの変換については情報不足杉。
- 464 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 11:27:54 ]
- >>463
MFCアプリ(C++)、CLR(C++/CLI)になってるけど、 この二つは、C言語形式で書けないの? 勉強中でよくわからない・・・
- 465 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 11:40:54 ]
- MFCの場合、自分のロジックはCと互換性のある書き方もできるけど、
WindowsとのI/FはC++でないとコンパイルできない。 CLRの場合、最早Cと互換性を持たせることが無意味。 何故なら、文字列から日付け処理からメモリ管理から何もかも流儀が全て違う。
- 466 名前:453 mailto:sage [2007/03/30(金) 16:51:55 ]
- ありがとうございます、通常のウィンドウへの描画は
WindowsのAPIを使ってみることにします。 まだ、ポインタもわかってないので(というか勉強がまだなので) 地道にCの言語仕様を学んだ後で、SDK取りに行きます。 バージョンの古いサンプルが開けない、というのは 恐らくツールの使い方がわかっていないだけだと思うので もう少し自分で頑張ります。
- 467 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 23:25:52 ]
- そのレベルなら1年は覚悟した方がいいよ
- 468 名前:453 mailto:sage [2007/03/31(土) 00:20:45 ]
- かかるかもしれないですね。でも、正直そこまで時間はかけたくありません。
地道にひとつずつ習得する以外方法はないと思いますが、 例えば、「ブロック崩し」を作りたい、という目的がある、とした場合に どの道筋が適切かご指導いただけるとありがたいです。 ちなみにお察しの通り環境はVC8のEEです。
- 469 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 00:25:11 ]
- C#でもやれば?
Javaだと某有名プログラムがあることだし、フラッシュも最近増えてきたけど。
- 470 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 16:50:42 ]
- 別の環境で作ったソースをVCで編集しなきゃいけないんですが、
フォルダ構成を元のままVCで作業するにはどうしたらいいでしょうか? 新規プロジェクトを作ってみたら ソースもヘッダも全部同じフォルダにできてしまうみたいで・・・ フォルダの設定とかありませんか?
- 471 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 17:25:30 ]
- 好きなようにできるだろ
- 472 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 17:59:47 ]
- できてしまう、って何でソースやヘッダを作る必要があるんだ?
もうソースはあるんだろ?
- 473 名前:デフォルトの名無しさん mailto:sage [2007/04/01(日) 12:46:41 ]
- VC6.0でWIN32API(SDK?)で開発しています
エディットコントロールで文字列を追加したときに、自動でスクロール させたいのですがうまくいきません(文字列の追加はできてます)。 CreateWindowExで指定しているウィンドウスタイルは次の通りです。 WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | ES_AUTOVSCROLL | ES_LEFT | ES_MULTILINE | ES_READONLY, 文字列周りは、このようにしています。 SetWindowText(hEdit, "起動\r\n(^-^)\r\n"); SendMessage(hEdit, EM_SETSEL, 0, -1); SendMessage(hEdit, EM_SETSEL, -1, -1); SendMessage(hEdit, EM_REPLACESEL, 0, (LPARAM)"(@-@)\r\n"); SendMessage(hEdit, EM_REPLACESEL, 0, (LPARAM)"(T-T)\r\n"); SendMessage(hEdit, EM_REPLACESEL, 0, (LPARAM)"orz\r\n"); SendMessage(hEdit, EM_SCROLLCARET, 0, 0); ネットで調べたところ、ES_AUTOVSCROLLやEM_SCROLLCARETがあれば勝手 にやってくれそうなんですが… どうすれば自動でスクロールし追加した文字列部分が表示されるように なるのか、教えて下さい。
- 474 名前:デフォルトの名無しさん mailto:sage [2007/04/01(日) 14:03:10 ]
- EM_SCROLLCARET
これでわざわざスクロールしてるような気がする
- 475 名前:デフォルトの名無しさん mailto:sage [2007/04/01(日) 17:29:35 ]
- >>473の文字列追加した後で、別のルーチンから文字列追加を大量に
行ったら、ちゃんとスクロールしてくれました。 >>473の処理はEM_SCROLLCARETの一行をコメントにしても変わらず… なにか条件があるんでしょうか…
- 476 名前:デフォルトの名無しさん mailto:sage [2007/04/02(月) 12:02:01 ]
- >>468
ブロック崩しを作りたいなら @まず持ってるVCの基本操作を覚える(プロジェクト作成の仕方、コンパイルの仕方、実行の仕方、 できればブレークポイントを使った基本的なデバッグ手法やコンパイルオプションの違い等も。) ACを覚える(基本文法・関数・ポインタ等。これはどんなCプログラムが作りたかろうが全ての人が通る道。) BWin32APIに触ってみる(ウィンドウを使ったプログラムの作成。) Cグラフィカルなプログラムを作ってみる(GDIを使うorDirectXを使う。どっちでもお好きに。) Dブロック崩しを作ってみる(ゲーム特有のアルゴリズム・当たり判定や入力制御等を学ぶ) 酷く大まかだけどこんな感じでいいんじゃないでしょうか。 ちなみにかかる時間はAが一番長くなると思います。
- 477 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 01:18:00 ]
- 嘘だ、絶対4だ。
- 478 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 08:14:48 ]
- でも挫折するのはたいてい3じゃないか?
- 479 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 10:05:53 ]
- M$と相性が合わないなら(1)で挫折するはず
- 480 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 12:02:09 ]
- ゲームは昔から出来合いのゲームのソースをいじりながら覚えたもんだが
BASIC限定だったのかもしれないな
- 481 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 12:34:05 ]
- basicでゲームやったことありますとか言い出すやつは使いものにならない。
たとえそういう経験あったとしても黙っておくもの
- 482 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 12:57:19 ]
-
< ワタシ ヲ ヨンダ?? ●/ <■ / >
- 483 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 13:59:52 ]
- >>481
そういう話じゃないでしょ。 既存のソースの改造から始めるのはどうかという話では。
- 484 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 14:17:17 ]
- いきなり改造から始めるなんて聞いたことがない。
VCの場合コードの量が半端じゃないし、 他人の書いたコード読んで仕様まで理解できたら相当なレベルだと思う。 初心者レベルだとビルドできなくて投げ出すのがせいぜい。
- 485 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 14:25:47 ]
- いやだからBASICの話でしょ改造なのはw
- 486 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 14:48:20 ]
- 昔はね。
今でも新しいことやるのはサンプルソースからやるけど。
- 487 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 14:51:03 ]
- ┏┳┳┓ ハイ. ┏┳┳┓
┏┫┃┃┃ 雑談は ┃┃┃┣┓ ┃┃┃┃┣┓ ここまで.┏┫┃┃┃┃ ┃ ┃┃┏━━━┓┃┃ ┃ ┃ 雑談 ┣┫ . ・∀・ ┣┫. STOP!┃ ┗━━━━┛┗┳━┳┛┗━━━━┛ ┏┻┓┃ ┏━┛ ┣┻┓ ┗━━━┫ ┗━┓ ┗━━━┛
- 488 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 21:53:49 ]
- ┌┬┬┐ ハイ. ┌┬┬┐
┌┤│││ 雑談は │││├┐ ││││├┐ ここから.┌┤││││ │ ││┌───┐││ │ │ 雑談 ├┤ . ・∀・ ├┤ START.!!│ └────┘└┬─┬┘└────┘ ┌┴┐│ ┌─┘ ├┴┐ └───┤ └─┐ └───┘
- 489 名前:デフォルトの名無しさん [2007/04/03(火) 23:58:42 ]
- 初心者なんですが、どうしても分からない事があります。お教え頂けないでしょうか?
フックプロシージャで、VK_DOWNをVK_TABに変換しているのですが、PostMessageだとうまく行くのに SendMessageに変えると動作しません。 ソースは次のようなものです。 static LRESULT CALLBACK OnKeyHook( int nCode, WPARAM wparam, LPARAM lparam ) { if( nCode < 0 ) return CallNextHookEx( HHook, nCode, wparam, lparam ); UINT msg; if( lparam & 0x80000000 ){ msg = WM_KEYUP; }else{ msg = WM_KEYDOWN; } switch( wparam ){ case VK_DOWN: PostMessage( GetFocus(), msg, VK_TAB, lparam ); ←ココです。 return TRUE; default: ... break; } return CallNextHookEx( HHook, nCode, wparam, lparam ); } VK_UP を SHIFT + VK_TAB に変換するのに SetKeyboardState を使いたいので、SendMessage で 行いたいので困っています。 私の知らない何かがあるのでしょうか? どうかご教授下さい。よろしくお願い致します。
- 490 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 01:25:54 ]
- あまり詳しくないけどSendMessageはメッセージキューを経由しない
(TranslateMessageを通らない)のでWM_KEYDOWNのSendでは WM_CHARが発生しないとか何とか。 ↑↓でフォーカス移動をするだけなら、キーボードイベントを捏造するより WM_NEXTDLGCTLをポストしたほうが楽だと思う。
- 491 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 12:02:54 ]
- MessageBoxみたく、手軽に小さいウィンドウを出して
ユーザに文字列を入力させたいんですが、そういう関数ってありますか?
- 492 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 12:28:47 ]
- >>491
DialogBox
- 493 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 12:36:55 ]
- >>492
素早い返答thx!!!
- 494 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 12:40:06 ]
- どういやDialogBoxと自分でウィンドウ作るのとどう違うんだろう・・・
- 495 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 12:44:21 ]
- >>494
ダイアログテンプレート以外の違い? モーダルとモードレスで違うべ。 モードレスは自分で作る場合に近いな。 自分でメッセージループ持たせてモーダルにすることもできるけど。
- 496 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 15:14:21 ]
- >>490さん
ありがとうございます。SendMessageはあきらめました。 ところで WM_NEXTDLGCTL ってダイアログでしか使えないんでしょうか? 今ダイアログを使ってなくて、普通のフォームのEDITとかCreateWindowで貼り付けてる状態で、 WM_NEXTDLGCTLは効かないみたいなんです orz >>494さんの疑問は私も悩んでいる点です 初心者でいっぺんにいろいろ覚えられないので、とりあえずダイアログを使わずにフォームをゴリゴリ 書いて、きつくなってきた所でダイアログの恩恵にあやかろうという方針を立てていました。 でも、そもそもの使用目的が違うような気がしてきて、にもかかわらず、その辺りの指針がはっきり せず、すっきりしません。 皆さんはどういう基準で使い分けられてるんでしょうか。
- 497 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 18:09:55 ]
- 今思ったんですが、普通のウィンドウとDialogの違いってメニューを付けられるかどうかじゃないでしょうか?
普通のウィンドウ、Dialog ともにモーダル、モードレスにできるし、どれで始めて、どう遷移していけばいいか 迷うんですけど... ひょっとしてDialogにもメニュー付けられたりして OTL
- 498 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 18:27:22 ]
- たしか付けられるはず。
- 499 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 18:37:25 ]
- 基本的にダイアログテンプレートを使うか使わないかでわければいいじゃん
- 500 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 20:37:30 ]
- ウィンドウには色々なスタイルがあって、
その中の一部分をダイアログと呼ぶ、というだけ。 てか、ダイアログをメインウィンドウにした方が 色々と楽だと思うのは俺だけ?
- 501 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 20:41:57 ]
- >>496
ダイアログ以外では使えないと思う。 MFCのCFormViewなどでは通常のウィンドウの上にモードレスダイアログを貼り付けて ダイアログリソースを利用しているので WM_NEXTDLGCTLも動く。 VistaのUIのガイドラインではウィンドウ全体を表示するためにスクロールバーを必要とする ダイアログは使うな。ダイアログはメニューバーやステータスバーを持つな。となってるけど ユーティリティのようなトップレベルウィンドウがダイアログの場合は除くとなっている。 トップレベルウィンドウをダイアログにするか、通常ウィンドウにするかの基準は、ざっと見た限りは 見つからなかった。 ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/UxGuide/UXGuide/Windows/DialogBoxes/DialogBoxes.asp
- 502 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 20:45:04 ]
- >>496
IsDialogMessageでを使えるようにならない?
- 503 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 20:45:13 ]
- あと、ウィンドウクラスが #37770 じゃ困ることもあるべ
- 504 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 20:46:34 ]
- >>498
メニュー簡単に付きました orz >>499 ですよね 現在ダイアログに傾倒して行ってるところです。 できれば全部これでやりたいと思い初めています。メイン画面から全部。 でもどのサンプルを見ても通常フォームから始まってるんですよね... ダイアログでは実現できない事って、例えばどんな事なんでしょうか。
- 505 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 20:47:02 ]
- >>503
ダイアログでもウィンドウクラスを指定できる。 指定したときには、そっちになり#37770にはならない。
- 506 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 20:51:03 ]
- WM_PAINTとかWM_CHARとかウィンドウそのものに関するメッセージを使うときには
普通のウィンドウにして、ダイアログにしない気がする。 あと、501のとおりメニューやスクロールバー、ステータスバーが付くときも ダイアログは使われていないと思う(でもたしかにユーティリティでは見かけたことある)。 505みたいにどっちつかずな面もあるけど。
- 507 名前:デフォルトの名無しさん [2007/04/04(水) 20:58:21 ]
- >>500
私もメインウィンドウをダイアログで行こうと考えています。 >>501 ありがとうございました。指針を示して頂いて、安心しました。 MSDN英語で読めるっていいですね。私はMSDN日本語でも頭がぐるぐるしてくるんです。 >>496 だめでした。 >>503 ダイアログのWM_CREATE(?)から CREATESTRUCT は取れるんですか?
- 508 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 21:01:26 ]
- まちがえました。
>>502 IsDialogMessageをメッセージループに入れてもだめでした。
- 509 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 00:50:55 ]
- ダイアログをメインフォームにしようとしているのですが、分からない事が出てきました。
DialogBoxParam でモーダル起動した場合、メッセージループが内部にあるから IsDialogMessage を組み込めないと 思うのですが、何か方法があるのでしょうか? CreateDialogParam でモードレスダイアログを作って、メッセージループを準備するのが正しいやり方なのでしょうか? どうかお教え下さい。よろしくお願いします。
- 510 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 01:42:26 ]
- ModalならIsDialogMessageは必要ないだろ
- 511 名前:デフォルトの名無しさん [2007/04/05(木) 02:11:46 ]
- 2個スレッドを作って、一つでユーザーインターフェースの処理
でもう一方で計算をさせたいと考えてます。 で、AfxBeginThreadと制御関数でマルチスレッドぽくはできました。 ただ、計算の進歩状況の表示や中断をさせられません。 今のところボタンをクリックされた後イベントハンドラ中で while文を回して進歩状況を表示していて意味がないんです。 ユーザー インターフェイス スレッド?を作れば一つは解決ですか?
- 512 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 02:27:39 ]
- >>510
本当だ!IsDialogMessage を入れないと TAB キーが使えないのかと思ってました。 ありがとうございます。
- 513 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 02:43:43 ]
- ウィンドウ登録、作成、メッセージループをダイアログに任せるだけで、こんなにもソースがすっきり!VBみたい
しかもコントールをXP風にできました。 うれしいです (↑∇↑) ありがとうございました。
- 514 名前:511 [2007/04/05(木) 05:12:06 ]
- ようするに、
WinMain()に別のスレッドから進歩状況を伝えて イベントを起こして表示させる方法を教えてください。 ということだったんですが、今もう一度探したら PeekMessage()というのを見つけました。 どうも自分が行わせたい処理はマルチスレッドを使わなくても よいように思うんでPeekMessage()を使ってみます。 できたあとの話になるんですが、処理にかかった時間を計測とか できるんでしょうか?関数の実行に要した時間なんですが…
- 515 名前:511 [2007/04/05(木) 05:26:52 ]
- timeGetTime見つけました。
スレ汚し申し訳ない…
- 516 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 05:30:31 ]
- >>514
皆さん寝てるんじゃないですか。 スレッドは以前覚えたんだけど...確かセマフォとかミューテックスとかあってご要望の事もできる筈だけど 使わなかったので忘れましたヾ(≧▽≦)ノ 明日の夜ぐらいにはエロいひとが来て、答えてくれるんじゃないかなぁ。 とりあえず ↓ に目を通しておかれたらいいかも。 www2m.biglobe.ne.jp/~yasutaka/intro/no_99.htm 関数の実行に要した時間は簡単にとれると思うけど...
- 517 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 05:48:31 ]
- >>505
ダイアログにウィンドウクラスを指定する方法を是非ともお教え下さい。お願いします┏○
- 518 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 08:03:06 ]
- >>517
wisdom.sakura.ne.jp/system/winapi/win32/win89.html
- 519 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 20:08:04 ]
- >>518
ありがとうございます ┏○
- 520 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 20:40:11 ]
- COM(ActivX?)が良く分かりません。以前VBでコントロール作ったり、ActiveX.Exe,ActiveX.Dllを作ったぐらいで...
将来的にやりたい事は、以下の2つです。できればMFCなしで行いたいんです。 1.ブラウザ上に貼り付けて利用するもの。 2.DirectX,DirectShow がComベースらしいので理解したい。 疑問点は以下の2つです。 1.MFC使わずにATL だけで実現可能でしょうか? 2.VS.NET 2003 で作成できるのでしょうか?(No Managedで) 今まではVC6の ATL COM AppWizard で作成してたんですが、VS.NET 2003 ではどの AppWizard で作ればいいのか 分かりません 。 どうかよろしくお願いします。
- 521 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 21:21:17 ]
- ┏ ・:∴○ ドシュッ
- 522 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 04:01:26 ]
- 520ですが、1は自己解決しました。
VC付属の OLE VIEWER で右クリックしたらHTML用にOBJECTタグを作ってくれて、ブラウザ上で動作しました。 ろくに試しもせずに質問してしまい、申し訳ありませんでした。
- 523 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 10:45:33 ]
- 聞きたいことがあったんだけど、レス書いてたら答えに気づいたw
- 524 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 18:07:19 ]
- そういうことって結構あるよ。
文章にするというのが軽く気分転換になっていると思う。
- 525 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 12:09:26 ]
- すみません。
変数の定義(int型)をmainメソッドの中の中間あたりで行うと 「そのような識別子はありません」とエラーが出てしまうんですが (定義をmainの先頭に持ってくるとエラーが出なくなります) なぜなんでしょう。先頭と中間での定義の間で printf、scanf、while関数等を使っているんですが、何か関係がありますか?
- 526 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 12:14:54 ]
- >>525
言語は何? 古いCでは変数宣言はブロックの先頭にある必要がある。 #勿論、ブロックの先頭ならよいので以下の例は問題ない。 int main() { printf("foo\n"); { int foo = getchar(); printf("%c\n", foo); } return 0; } どうでもいいが、while関数なんてものは無いし、 一般的にcではメソッドとは言わない。用語は間違わないように。
- 527 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 12:23:03 ]
- 知ってるけどスレ違いだから教えてやらない
- 528 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 12:29:35 ]
- そうなんですか、ちなみに言語はCですね。失礼しました。
getch()等が「古い型」だと注意されるのはなんだろうと思っていましたが。 ブロックを設けて先頭へ記述するようにします。 用語も適当に使っていました。
- 529 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 12:29:56 ]
- まさか
printf("%d", a); int a; なんてやってるオチでは…
- 530 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 12:31:23 ]
- >>526
インデントぐらいつけなよ
- 531 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 12:51:13 ]
- あー、普段はエディタが勝手にインデントするし、どうせ見えないと思って割愛した。許せ。
- 532 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 18:03:44 ]
- 自動コード整形のパターンってカスタマイズできるんでしょうか?
- 533 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 20:30:36 ]
- 2chにソース張ること自体ねぇ・・・
どっか引っ越そうぜ
- 534 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 22:01:23 ]
- int main() {
using std::vector; typedef std::vector<int>::size_type vec_sz; vector<int> Integers; int Integers_num = 112, Integers_max = 100, Integers_min = 0 ; make_randnums( Integers, Integers_num, Integers_min, Integers_max); vector< vector<int> > Devided; vec_sz Devided_num = 4; Devided.resize( Devided_num ); vec_sz Dev_contents_num = Integers.size() / Devided_num ; for ( vec_sz i = 0; i < Devided_num - 1 ; i++ ) Devided.at(i).resize( Dev_contents_num ); vec_sz last_num = Integers.size() - ( Devided_num - 1 ) * Dev_contents_num; Devided.back().resize( last_num ); if ( Integers.size() == ( Devided.size() - 1 ) * Devided.at(0).size() + Devided.back().size() ) { }else exit(1); std::sort( Integers.begin(), Integers.end() ); std::reverse( Integers.begin(), Integers.end() ); vector<int>::iterator start_ptr = Integers.begin(), end_ptr = start_ptr ; for ( vec_sz i = 0; i < Devided.size(); i++ ) { std::copy( start_ptr, end_ptr += Devided.at(i).size(), Devided.at(i).begin() ); start_ptr += Devided.at(i).size(); } return 0; }
- 535 名前:534 mailto:sage [2007/04/08(日) 22:05:10 ]
- このプログラムは某入門書の例題でヘタレの俺なりの回答案です
80行以上あったプログラムがコメントとか{}消したら1レスに収まっちゃったわけですが コレって元の書き方が悪いんですかねぇ?
- 536 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 22:07:06 ]
- 勿論全体ではなく一部なんですが
それでも80超行が30行ちょっとってのは無いでしょうってことです
- 537 名前:536は535=534です mailto:sage [2007/04/08(日) 22:07:45 ]
- すみません
- 538 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 22:08:20 ]
- 激しく読みにくくてウザい
- 539 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 22:11:33 ]
- ゴミ
- 540 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 22:23:15 ]
- >>534
コメントは消すなよw
- 541 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 22:32:43 ]
- こういうのだったら消していい。
int i; /*ループ変数*/
- 542 名前:デフォルトの名無しさん [2007/04/08(日) 22:37:41 ]
- 良いプログラムとは、コードよりコメントの行数の方が多い
- 543 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 22:54:13 ]
- ん?
元のソースはわからないけど これよりはマシだったんだろうなぁと思う。
- 544 名前:デフォルトの名無しさん mailto:sage [2007/04/09(月) 14:18:52 ]
- 良いプログラムとは、コード自体がコメントのように読める
- 545 名前:デフォルトの名無しさん mailto:sage [2007/04/09(月) 14:24:59 ]
- 良いプログラムとはコードのないプログラム
- 546 名前:デフォルトの名無しさん mailto:sage [2007/04/09(月) 14:42:14 ]
- 良いプログラムとは、ドキュメントだけでコードが理解できる ( ・`ω・´)ノ
- 547 名前:デフォルトの名無しさん mailto:sage [2007/04/09(月) 15:18:10 ]
- それは読んでる人の性能がいいだけじゃ・・・
- 548 名前:デフォルトの名無しさん mailto:sage [2007/04/09(月) 15:26:57 ]
- 学習用の過程で作ったものだったら
それこそ8割がコメントとかでもいいんじゃないの? コメントに表現しようとあれこれ考えるのも理解の助けになるし
- 549 名前:デフォルトの名無しさん mailto:sage [2007/04/09(月) 17:44:31 ]
- 8割コメントって、学生かい ( ・ω・)
一応、クラス3分、関数30秒(=4行くらい) で、読み終わる程度がいいとされてる 限られたスページと時間で、どれだけ理解させるかが文章力だ m9( ・`ω・´) 仕様100ページもあったら、結局何書いてるか分からんし マニュアルも全部読まないでしょ、バージョン上がったらゴミになるし
- 550 名前:デフォルトの名無しさん mailto:sage [2007/04/09(月) 17:46:33 ]
- >仕様100ページもあったら、結局何書いてるか分からんし
・・・
- 551 名前:デフォルトの名無しさん mailto:sage [2007/04/09(月) 18:03:46 ]
- Boostのビルドも出来ん雑魚はほっとけ
- 552 名前:デフォルトの名無しさん mailto:sage [2007/04/09(月) 19:48:20 ]
- 仕様書以外に何が用意されているかが問題だな。
サンプル一切無しなら死ねる。
- 553 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 16:10:07 ]
- どれだけコードを綺麗に区切ってまとめられるかと、
それにどれだけ適切なコメントをできるかが 勝負の分かれ目 コメントは付けりゃいいってもんじゃない 8割コメントはちょっとアホだろ・・・w 場合によるけどさ
- 554 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 20:28:35 ]
- ここって結構底辺なのなww
- 555 名前: ̄ ̄ ̄V ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ mailto:sage [2007/04/10(火) 21:08:38 ]
- _____
/::::::::::::::::::::::::::\ _ /::::::::::::::::::::::::::::::::::::::\ /  ̄  ̄ \ |:::::::::::::::::|_|_|_|_| /、 ヽ |;;;;;;;;;;ノ \,, ,,/ ヽ |・ |―-、 | きみ頭だいじょうぶ? |::( 6 ー─◎─◎ ) q -´ 二 ヽ | |ノ (∵∴ ( o o)∴) ノ_ ー | | /| < ∵ 3 ∵> \. ̄` | / ::::::\ ヽ ノ\ O===== | :::::::::::::\_____ノ:::::::::::\ / |
- 556 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 12:22:23 ]
- それがくだすれのくだすれたる所以
- 557 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 09:36:39 ]
- class Fred;
typedef auto_ptr<Fred> FredPtr; class Fred{ public: static FredPtr create() throw(bad_alloc); static FredPtr create(int i) throw(bad_alloc); static FredPtr create(const Fred& x) throw(bad_alloc); virtual void goBowling(); private: Fred(int i=10) throw(); Fred(const Fred& x) throw(); int i_; }; FredPtr Fred::create() throw(bad_alloc) { return new Fred(); } FredPtr Fred::create(int i) throw(bad_alloc) { return new Fred(i); } FredPtr Fred::create(const Fred& x) throw(bad_alloc) { return new Fred(x); } void Fred::goBowling(){ std::cout << this->i_; } Fred::Fred(int i) throw() : i_(i){} Fred::Fred(const Fred& x) throw() : i_(x.i_){} void sample() { FredPtr p(Fred::create(5)); p->goBowling(); }
- 558 名前:デフォルトの名無しさん [2007/04/15(日) 09:37:49 ]
- C++QAにあるソースなんですが、
p->goBowling();でアクセス違反が起こります。 なんで?
|

|