- 1 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 00:25:51 ]
- エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。 ※sage禁止です(と代々スレに書いてありますが自己判断で)。 【前スレ】 【初心者歓迎】C/C++室 Ver.63【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1231499251/ 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm ◆ソースのインデントについて 半角やTABでのインデントはスレに貼ると無くなります。 そのため、アップローダーに上げるのが最も良いですが、 直接貼るのであれば、全角空白か に置換しておくことをお勧めします。
- 96 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 12:41:45 ]
- Win32アプリの
LRESULT CALLBACK WndProc はまた別物ですか?
- 97 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 14:22:14 ]
- WaitForSingleObjectは普通マルチスレッドで使うんですよね?
勝手に別スレッドで待機して制御は返す仕組みじゃないですよね?
- 98 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 14:25:43 ]
- まあそうだが、シングルスレッドでもオブジェクトがシグナル状態か確認する時も使う。
- 99 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 14:43:22 ]
- >>96
CALLBACKがどう#defineされてるか見てみるといい
- 100 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 14:49:12 ]
- gdb 用のGUI ツールお勧め教えて
class 関連 CUI じゃツライす
- 101 名前:43 mailto:sage [2009/02/18(水) 16:26:59 ]
- >>95
コールバックをする関数の引数に定義された型と同じ関数(戻り値の型と引数の数、型が同じ関数)を作ってその関数名を渡せばいいんだよ メンバ関数は呼び出し規約(CALLBACK = stdcall)が違う(thiscall)かもしれない
- 102 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 17:09:50 ]
- >>96
そのコールバックは、引数の処理をどうするか、という指標なんであまり気にしなくて良いと思う
- 103 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 20:51:27 ]
- struct V4 {
union { struct { float x, y, z, w; }; float m[4]; }; }; と書いた時、 xのアドレス == &m[0] 、yのアドレス == &m[1]、 … になったのですが、これはどんなコンパイラでやっても同じ様になるんでしょうか?
- 104 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 21:43:59 ]
- xのアドレス == &m[0]だけは保証されてる
あとはコンパイラ次第
- 105 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 21:45:58 ]
- >>96
LRESULTは戻り値の型、>>91でのvoid、 WndProcは関数名、>>91でのFuncにあたる。 CALLBACKは他の人の言うとおり。
- 106 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 21:46:44 ]
- キーボード押しっぱなし時のWM_KEYDOWNは、一回発行された後に
少し時間を置いてから連続で発行されるんですか? キーボードからの入力でキャラクタを動かしているのですが、 キーボードおしっぱ→キャラクタが1ループ分動く→コンマ数秒無反応 →キャラクタが連続で動く、となってしまいます。 ゲームのキャラクタみたいにキーボードを押すとすぐに連続で動作してくれる 処理をしたいのですが・・
- 107 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 21:53:06 ]
- >>106
GetAsyncKeyState
- 108 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 22:08:17 ]
- >>107
こんな便利なものが・・・ ありがとうございます。
- 109 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 04:45:06 ]
- マルチスレッドの関数はグローバル領域に作ったほうがいいですか?
クラスの中に入れるとめたくそ難しいんですが
- 110 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 05:12:32 ]
- 難しいと思うのならクラス内に作らなくても構いません。
- 111 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 05:24:48 ]
- なんでメンバ関数だとコンパイルできないんですか?
静的関数ならいんでしょうか
- 112 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 05:34:41 ]
- そりゃぁ、スレッド生成するAPIがクラスに対応してなければインスタンスへのポインタ(this)を渡せませんから。
thisを伴わない静的メンバ関数ならAPIから呼べますから、コンパイルもできるはずです。 まぁ、環境も書かなきゃエラーメッセージも書かないということは、詳しい説明は要らないのでしょうし、この辺で。
- 113 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 05:55:23 ]
- いやいります。見捨てないでください
AfxBeginThread(CView::Proc, this); //h static UINT __cdecl Proc( LPVOID pParam ); static UINT __cdecl ProcAfter( LPVOID pParam ); //cpp UINT CView::Proc( LPVOID pParam ) { CView *const this_ptr = (CView *)pParam; return this_ptr->ProcAfter(); } UINT CView::ProcAfter( LPVOID pParam ) { //実際にマルチスレッドで実行したい処理 } なぜこう書かないといけないのかが理解できません。直接 AfxBeginThread(CView::ProcAfter, this); こうしたいんですが、エラー出まくります。&CView::ProcAfterにしろとか、やっても仮想関数だとかになるんです。 Afxじゃくても_beginthreadexでも同じなんです。マルチスレッドをクラスのメンバでやるのはそうとう強引で特殊ですか?
- 114 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 06:19:42 ]
- >>113
にほんごよめますか? >112 >まぁ、環境も書かなきゃエラーメッセージも書かないということは
- 115 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 13:37:43 ]
- Win32アプリのメッセージループ内で独自の処理をする時クラスのインスタンスとかを作るのはどこがいいんですか?
ループに入る直前でいいんですか?いろいろなところにここにコードを追加してくださいとか書いてあるので不明です
- 116 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 13:42:45 ]
- #define _T("test.txt") fileName
マクロの仮パラメータリスト内に予期せぬ文字列がありますのエラーが出ます。 どう書けばいいんですか?
- 117 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 13:56:14 ]
- あきらかに変だがどう使いたいわけ?
- 118 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 14:19:28 ]
- 文字を置き換えたいだけです。
プログラム中のどこだかわからなくなるので 先頭に置いてファイル名を変えられるようにしたいんです
- 119 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 14:38:07 ]
- だったら逆だろ?
#define filename _T("test.txt")
- 120 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 14:56:56 ]
- 逆でしたか!どうもです
- 121 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 17:46:10 ]
- >>113
(非静的な)メンバ関数は普通の関数と違い、&演算子を使わないとメンバ関数へのポインタを得られない という点はエラーメッセージの言うとおり。 そうやってメンバ関数へのポインタを得たところで、>>113のようにできないわけは、 メンバ関数へのポインタは、普通の関数へのポインタとは中身が異なっているため。 その主な理由は、仮想関数にもきちんと対応しないといけないことから。 メンバ関数を直接渡せるようにしたければ、自分でそういう関数を作ればいいじゃない。
- 122 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 17:47:35 ]
- というわけでやってみた。普通は関数オブジェクトを引数にすべきだろうけど。改行制限厳しい。VC++ 2008。SP1ならもう少し簡単になる。
#include <utility> #include <memory> #include <stdio.h> #include <process.h> #include <windows.h> #include <atlbase.h> class Hoge {public: UINT Proc() {puts("Hoge::Proc"); return 0;}}; template<typename T> UINT __stdcall beginthread2_entry(void* p) { typedef std::pair<T*, UINT (T::*)()> thread_data_t; thread_data_t* ptd = static_cast<thread_data_t*>(p); T* px = ptd->first; mem_fn_t mf = ptd->second; delete ptd; return (px->*mf)(); } template<typename T> HANDLE beginthread2(T& x, UINT (T::*memFn)(), int priority = THREAD_PRIORITY_NORMAL, UINT stack = 0, DWORD flags = 0, LPSECURITY_ATTRIBUTES lpsa = 0) { typedef std::pair<T*, UINT (T::*)()> thread_data_t; std::auto_ptr<thread_data_t> ptd(new thread_data_t(&x, memFn)); uintptr_t ret = _beginthreadex(lpsa, stack, beginthread2_entry<T>, ptd.get(), flags, 0); if (ret != 0) ptd.release(); return reinterpret_cast<HANDLE>(ret); } int main() { Hoge hoge; ATL::CHandle h(beginthread2(hoge, &Hoge::Proc)); if (h != 0) WaitForSingleObject(h, INFINITE); }
- 123 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 18:10:21 ]
- AfxBeginThread(boost::bind(&CView::ProcAfter, boost::ref(CView), this);
これでよくね?
- 124 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 18:50:29 ]
- LPSTRからLPCWSTRに変換するにはどうすればいいでしょうか
- 125 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 19:50:16 ]
- >>124
Visual StudioのStandard以上を持っているなら、ATLのCA2Wがお勧め。 無いなら、MultiByteToWideChar使え。
- 126 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 19:50:41 ]
- >>123
AfxBeginThreadって関数オブジェクト引数に取れるのか?
- 127 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 10:01:57 ]
- >>122
難しすぎて誰もわからないに一票
- 128 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 10:33:23 ]
- だいたい なんでメンバ関数に固執するんだろう?
インスタンスをスレッド間で共有する前提でアレコレ クラスカキコしてたら気が狂うんじゃね?
- 129 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 14:14:09 ]
- 以下のソースで、読み込んだデータの改行コードが削除されてしまう。
istream_iteratorを使ってるせい? 環境はmingw(gcc 4.3.3) ifstream fin("data.bin", ios::in | ios::binary); if (fin.good()) { typedef vector<char> Data; istream_iterator<char> begin(fin), end; shared_ptr<Data> data(new Data(begin, end)); }
- 130 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 14:15:53 ]
- >>129 istreambuf_iterator
- 131 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 14:19:08 ]
- >>130
それだ!どうもありがとう。ペコリ。
- 132 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 09:23:53 ]
- !って人が使ってるの見てはじめて気づいた
すごいいらいらする
- 133 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 11:02:58 ]
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!! !!!!!!! !!!!!!!!!!!!!!!! !!!!!!! !!!!!!!! !!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!! ! !!!!!! !!!!!!!! ! !!!!!! !!!!!! !!! !!!! !!!!!!!!!!!!!!! !!!!!!! !!!! !!!!!!!!!!!!!!! !!!!!!!! !!!!!!!!!! !!!!!!!!!!!!! !!!!!!!!!!!!!!! !!!!!!!!!!!!! !!!!!!!!!! !!!!!!!!!! !!!!!!!!!! !!!!!!!!!!!!!!!!!! !!!!!!!!!! !!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! しますか?
- 134 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 11:44:57 ]
- VS2005 C++でWindows Mobileの開発してます(CはDOS以来の初心者です)。
頻繁に呼ばれる文字列処理をする関数内の最初のオート変数として void hoge(void){ TCHAR szReadBuf[2048]; の様な宣言をしているのですが、この処理を呼んでるループ処理辺りで [Stack fault] Thread= といった様なエラーがでるので void hoge(void){ static TCHAR szReadBuf[2048]; ZeroMemory(szReadBuf, sizeof(szReadBuf)); の様に解放されない処理にした所、最初のコード時より幾分か多く回せるようになりました。 そうゆうもんでしょうか?
- 135 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 11:54:54 ]
- >>134
スタック領域は特にモバイルなら大きく取られていないことが多いので、 2048要素の配列で溢れてしまったのでしょう。 後者なら、スタックは消費しないのでその点は大丈夫です。 それはいいとして、ZeroMemory()を呼ぶのが妥当かどうかは検討に値しますが。 # 何故自動変数の時には呼ばないのに静的にしたら呼ぶのか。
- 136 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 12:36:50 ]
- 早速ありがとう御座います。
前者はその下でこのようにしてます。 szReadBuf[0]='\0'; 後者でもこうすべきですね? 内部の処理が_tcstok等を使って文字列の置換をする処理なので、前回内容が 残ってると紛らわしいのでZeroMemoryしてました。 あと、GlobalAllocでアロケートした変数の再初期化時にZeroMemoryで初期化してますが ZeroMemoryで無いほうがいいのでしょうか?
- 137 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 12:45:23 ]
- 連投すいません
訂正) × 前回内容が残ってると紛らわしいのでZeroMemoryしてました。 ○ デバッグ時に前回内容が残ってると紛らわしいのでZeroMemoryしてました。
- 138 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 13:16:23 ]
- BC++です。
クラスを定義したヘッダファイルとそのメンバ関数を定義したcppファイルを コンパイルするとUnresolved external '_main'となってしまいます。 一つにまとめて書くしかないのでしょうか?
- 139 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 14:01:03 ]
- 「EXE 作る気はないぜオプション」をBCCに渡す。
- 140 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 14:57:58 ]
- -cを付けたらいきました。
ありがとうございます。
- 141 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 15:50:40 ]
- >>136
初期化したくて、可搬性を気にしないなら、ZeroMemory()で医院で内科医?
- 142 名前:134 mailto:sage [2009/02/21(土) 16:06:00 ]
- >>135 >>141
ありがとうございます。 とりあえず、今のレベルはエラー無く動かす事が目標なので、余裕がでたら考えたいと思います。
- 143 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 16:06:40 ]
- memsetだとなんでダメなの?
- 144 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 16:16:15 ]
- C++厨はmemset大嫌いだから
Cプログラマはmemsetが使える場面をいつも血眼で探してるから C++作法に改宗する時に一番拒むのがここだよな
- 145 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 16:27:38 ]
- memsetいいじゃん
初期化楽だし 俺、C++使っててもメンバを構造体にしてmemsetでやっちゃってるし
- 146 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 16:35:24 ]
- C++厨は全部のメンバを代入文で初期化してんの?
- 147 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 16:36:31 ]
- あ、馬鹿が居る。
- 148 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 16:36:42 ]
- メンバ初期化子に決まってるだろ
- 149 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 16:49:31 ]
- C厨はポインタもmemsetで初期化してんのか?
- 150 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 16:51:45 ]
- >>122
大先生、なんか凄いことしてるみたいだから、一部修正してVC2005でコンパイルしてみたけど、 できないよYo。どうすれば良い? #include <utility> #include <memory> #include <stdio.h> #include <process.h> #include <windows.h> #include <functional> #include <atlbase.h> class Hoge {public: UINT Proc() {puts("Hoge::Proc"); return 0;}}; template<typename T> UINT __stdcall beginthread2_entry(void* p) { typedef std::pair<T*, UINT (T::*)()> thread_data_t; thread_data_t* ptd = static_cast<thread_data_t*>(p); T* px = ptd->first; std::mem_fun_t<UINT, T> mf(ptd->second); delete ptd; return (px->*mf)(); // <======C2297: '->*' : 無効です。右オペランドには型 'std::mem_fun_t<_Result,_Ty>' が指定されています。 } // To be continued
- 151 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 16:52:10 ]
- template<typename T>
HANDLE beginthread2(T& x, UINT (T::*memFn)(), int priority = THREAD_PRIORITY_NORMAL, UINT stack = 0, DWORD flags = 0, LPSECURITY_ATTRIBUTES lpsa = 0) { typedef std::pair<T*, UINT (T::*)()> thread_data_t; std::auto_ptr<thread_data_t> ptd(new thread_data_t(&x, memFn)); uintptr_t ret = _beginthreadex(lpsa, stack, beginthread2_entry<T>, ptd.get(), flags, 0); if (ret != 0) ptd.release(); return reinterpret_cast<HANDLE>(ret); } int main() { Hoge hoge; ATL::CHandle h(beginthread2(hoge, &Hoge::Proc)); if (h != 0) WaitForSingleObject(h, INFINITE); }
- 152 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 17:21:28 ]
- すまん。元の122のコードのmem_fn_tのmem_fn_t mf = ptd->second;の行は
UINT (T::*mf)() = ptd->second;が正しい。 改行制限でtypedefをやめたのに直すのを忘れていたみたいだ。 そしたらVC++2005でも通る。
- 153 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 17:46:34 ]
- >>152
超早いレス熱烈感謝あげ typedef UINT (T::*mem_fn_t)(); が抜けていたんですか mem_fn_tはstd::mem_fun_t関係のなんかと勝手に妄想してた
- 154 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 17:55:31 ]
- >>141は医者か
- 155 名前:150,152 mailto:sage [2009/02/21(土) 18:25:38 ]
- >>150
あいやーーー、俺、mem_fun_tは第一引数で渡すオブジェクトのポンタ でオブジェクトを指定するっての忘れてたYo,orz return mf(px); が正解だな
- 156 名前:デフォルトの名無しさん [2009/02/21(土) 18:44:46 ]
- C++で可変長引数の関数を作るときは、Cと同じように
#include <stdarg.h> とやって、 va_list, va_arg を使えばいいでしょうか?
- 157 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 19:06:54 ]
- Cと同じでおk
ただし可変長引数の部分に非PODクラスを渡すことはできないから注意な
- 158 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 20:25:07 ]
- ↓がg++4なら通るけどVC9など通らない。
これって自分何か勘違いしてますか?VC9のバグってことはありませんか? struct MyClass { int value; void set_value(int v) { value = v; } int get_value(void) const { return value; } }; vector<std::tr1::shared_ptr<MyClass> > v; ...vに適当に要素を入れる... for_each(v.begin(), v.end(), std::tr1::bind(&MyClass::set_value, std::tr1::placeholders::_1, std::tr1::bind(&MyClass::get_value, std::tr1::placeholders::_1))); // bindでintがint&に変えられないというエラー
- 159 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 10:48:07 ]
- 参照変数の初期化の右辺値で三項演算子使うのはマトモな所業の範疇?
- 160 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 12:13:57 ]
- 右辺値じゃなくて右辺だな。
A ? B : C の B と C が両方左辺値なら問題ないし、 const 参照なら右辺値でも問題ない。
- 161 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 20:58:16 ]
- C++ コーディングスタンダードで、
int n; if (cond) n = X; else n = Y; みたいにするなら、 int n = cond ? X : Y; のほうがいいって書いてあったよな。
- 162 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 21:38:05 ]
- cond次第だろ
- 163 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 22:39:03 ]
- 参照だとそもそも if-else が使えないから
? : を使わざるを得ないけどね。
- 164 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 00:53:15 ]
- int n = Y;
if (cond) n = X; 変数には初期値いれとこうぜ
- 165 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 01:06:47 ]
- 俺のソースは>>161,164のすべてを気分で使い分けて、
ソースを読む人間を翻弄する
- 166 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 09:12:42 ]
- テンプレートクラスのコンストラクタ引数にその実態クラスのstaticメンバを使用する記述は問題ない?
template<T> class BB{ BB(const T &); static const T func(T a){retunr a + 1;}; }; int x = 0; BB<int> i(i.func(x)); // BB<int> i(BB<int>::func(x)); と同じ意味になる筈
- 167 名前:デフォルトの名無しさん [2009/02/23(月) 20:33:23 ]
- 質問ですが、例えば"net localgroup Administrators GroupX"というコマンドを
C++で実現するにはどうすればいいでしょうか? 一応自分なりに調べましたが、ShellExecute()やCreateProcess()を使うのは 個人的に美しくないかな、、、と思います。 知人に相談したら、vbsで set objShell = WScript.CreateObject("WScript.Shell") objShell.Exec "net localhost〜" ってやればいいんじゃない、とアドバイスを受けましたが、 vbsは全くわかららず、正直、自分でメンテナンスできるとは思えません。 C++のライブラリ関数で実現する方法があったら教授お願いします。 C言語では組み込み系を少しやっていました。 最近、C++でちょっとしたwindows用のプログラムを作ることになりました。 C++は初心者レベルだと思います。 開発環境はwindows XP + Visual studioです。 よろしくお願いします。
- 168 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 20:38:57 ]
- C++のライブラリにはないから、
APIをたたくしかないな。Win32スレに行ってみたら。
- 169 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 20:40:47 ]
- >>167
プロセスを起動するのはOSの役割なのでOSのAPIを使う って頭になれば問題ない
- 170 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 20:43:22 ]
- >>167
騙されているぞ。 そのVBSのコードはShellExecuteを呼ぶのと同じだ。
- 171 名前:デフォルトの名無しさん [2009/02/23(月) 21:11:43 ]
- >>167です。
>>168-170 回答ありがとうございました。 C++のライブラリにはないのですね。 なんとなく、(いないとは思いますが)netコマンドを削除する人がいたら嫌だな という浅い考えで、ライブラリを使いたいと思っていました。 >>168さんの忠告どおりWin32スレに行こうと思いますが、 もうちょっと自分でWin32を調べてからにしたいと思います。 正直、何をどう質問すればいいのか、というのがわからない状態ですので、、、 (結局、>>169さんの忠告どおり、割り切りそうな気がしますが) >>170さん そうなんですか。まあ、知人もこっちのほうが簡単だよ、 っていう感じだったので、悪意はなかったと思います どうもありがとうございました。
- 172 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 22:04:01 ]
- コンソールアプリケーションで実用的なプログラムってありますか?
C++で学んだことを生かす練習のためにもなにか作りたいのですが・・
- 173 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 22:10:57 ]
- >>172
コンパイラ&リンカ
- 174 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 22:41:03 ]
- >>173
ありがとうございます 自分の力じゃ無理そうなのでアルゴリズムから作っていこうと思います
- 175 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 10:15:53 ]
- 圧縮アルゴリズムおもろいよ
- 176 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 15:37:21 ]
- 構造体A(メンバchar a , int b)をsizeofした値を求めろって問題は
5と8どちらを答えるべきなんですかね。 パディングも含めた値が実際の答えなのでしょうか?
- 177 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 15:43:08 ]
- intのサイズすら環境依存でFA
- 178 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 16:17:40 ]
- >>176
答えはsizeof( A )だろ
- 179 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 19:12:55 ]
- >>178
お前まぢ頭いいな
- 180 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 19:43:18 ]
- ('A`)に見えた
- 181 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 19:44:54 ]
- sizeof に目がなくて
- 182 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 20:08:55 ]
- sizeof('A`)だと8なのでやはり8が答えみたいですね
ありがとうございました。
- 183 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 22:27:13 ]
- >>182
俺の環境では5になるんだが
- 184 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 23:19:58 ]
- >>182 環境依存
#include<stdio.h> #define MACRO(type) printf("sizeof(%s)=%d\n", #type, sizeof(type)) #pragma pack(push, 1) struct pack1{ char a; int b; }; #pragma pack(pop) #pragma pack(push, 2) struct pack2{ char a; int b; }; #pragma pack(pop) #pragma pack(push, 4) struct pack4{ char a; int b; }; #pragma pack(pop) int main(void){ MACRO(struct pack1); MACRO(struct pack2); MACRO(struct pack4); return 0; }
- 185 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 01:13:18 ]
- なんと…
処理系依存なのでどれも正解ということですか! コードまでご丁寧にありがとうございました。
- 186 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 09:51:49 ]
- 処理系というか、自分で決められるといった方が正しい
- 187 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 11:38:22 ]
- #include <stdio.h>
#include <string.h> struct address{ char name[20]; char jusyo[21]; int age; }; int main(void) { struct address abc; int s = 1; if(s = 1){ char name[30]; char jusyo[70]; int age; printf("名前? "); scanf("%s", &name); printf("住所? "); scanf("%s", &jusyo); printf("年齢? "); scanf("%d", &age); abc.age = age; strcpy(abc.name, jusyo); } return(0); } C言語を学習しています。 上プログラムでキーボードから日本語を入力し出力させたいのですが、どうすればいいのでしょうか? Cygwinを使っています。
- 188 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 11:47:00 ]
- printf使えば良い
- 189 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 11:47:45 ]
- >>187
やったことないけど pinoki.la.coocan.jp/wiki/?Cygwin%2FInstall%2F%C6%FC%CB%DC%B8%EC%B2%BD
- 190 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 12:08:46 ]
- >>187
cygwin自体が日本語の入出力をできない状態なら>189へ。 gccのコンパイルオプションについて知りたいならcygwinスレへ。 まぁ、動くかどうかは兎も角scanf()の使い方も間違っているわけだが。 使わないに越したことはないが、scanf("%29s", name)とするのが無難。
- 191 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 12:11:18 ]
- 構造体のメンバとローカル変数の配列サイズが違うじゃん。それは拙いっしょ。
- 192 名前:デフォルトの名無しさん [2009/02/25(水) 15:13:30 ]
- 1>LINK : warning LNK4098: defaultlib 'LIBCMT' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。
1>libcpmtd.lib(xdebug.obj) : error LNK2019: 未解決の外部シンボル __malloc_dbg が関数 "void * __cdecl operator new(unsigned int,struct std::_DebugHeapTag_t const &,char *,int)" (??2@YAPAXIABU_DebugHeapTag_t@std@@PADH@Z) で参照されました。 1>libcpmtd.lib(xdebug.obj) : error LNK2019: 未解決の外部シンボル __free_dbg が関数 "void __cdecl operator delete(void *,struct std::_DebugHeapTag_t const &,char *,int)" (??3@YAXPAXABU_DebugHeapTag_t@std@@PADH@Z) で参照されました。 1>C:\Documents and Settings\\デスクトップ\Game\ActionGame\/GameAppli\ActionGame.exe : fatal error LNK1120: 外部参照 2 が未解決です。 #include <fstream> をインクルードすると上記のエラーが出ます どうすればいいのですか;;
- 193 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 15:24:46 ]
- プロジェクトのプロパティ→C/C++→コード生成→ランタイムライブラリ
を、どれか正しいものに変更する なんか他の外部ライブラリ使ってるだろ?
- 194 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 15:26:17 ]
- デバッグ版とリリース版のオブジェクトが混在しているように見える
いったんすべてのオブジェクトを削除してビルドしなおせばいい ほかから持ってきたライブラリ結合してるならリンクオプションをそれにあわせる
- 195 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 06:44:15 ]
- staticメンバ関数を利用するメリットってあるんでしょうか?
- 196 名前:195 mailto:sage [2009/02/26(木) 06:51:07 ]
- すいません
スレ移動します
|

|