1 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 22:39:18 ] エスケープシーケンスやWin32APIなどの環境依存なものでもOK。 ただしその場合、質問者は必ず環境を書きましょう。 ※sage禁止です(と代々スレに書いてありますが自己判断で)。 【前スレ】 【初心者歓迎】C/C++室 Ver.56【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1215278693/ 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm ◆ソースのインデントについて 半角やTABでのインデントはスレに貼ると無くなります。 そのため、アップローダーに上げるのが最も良いですが、 直接貼るのであれば、全角空白か に置換しておくことをお勧めします。
267 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 13:50:08 ] C++だと関数にヌル終端文字列を渡すときも、const char * とか使わず、 全て const char & とか const std::string & を使うの?
268 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 13:51:13 ] const char & を渡してどーすんだ
269 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 13:58:18 ] 俺は、参照を使わざるを得ないときと、値渡しの代わりとしてコピーのコストを抑えるためにしか、参照を使ってないな それ以外はポインタ
270 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 14:08:14 ] void test(const char& s){ if(&s==NULL){ std::cout << "(NULL)" << std::endl; } else{ std::cout << &s << std::endl; } } int main(){ test(*"aaa"); test(*static_cast<const char*>(NULL)); return 0; } --結果--- aaa (NULL) 扱えないことはない。 でもまぁ正直言って、これはないw
271 名前:265 mailto:sage [2008/07/25(金) 14:12:35 ] 値渡しのコピーを省くためなら、参照でなくともポインタでできそうですけど、 それをわざと参照でやる理由はなんでしょう? c++まだ勉強中で、ざっと見た感じ、以下のようなものしか有用性はないような気がしてます。 ポインタでの煩わしい明示を省ける、視覚的に区別する以外のメリットはあるのでしょうか? int n; int &func(); void main() { int i = 0; func() = i; } int &func() { return n; }
272 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 14:29:06 ] ポインタは参照と違ってNULLを渡すことができるらしいよ。 参照はポインタと違っていい一般保護例外を起こすようなアドレスを排除できるらしいよ。
273 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 14:35:22 ] >>271 少なくともread-onlyな引数を、効率のためにconst参照渡しがしたいケースなら、 素直にreference使ったほうが便利だよ >>272 の言うような問題もないし、呼ぶ側としても ただの値渡しと同じように記述できて、型変換や何かが必要な場合もコンパイラが面倒 見てくれるからな ユーザ定義演算子などでは、意図した記法を実現したければ、 事実上参照以外に選択肢が無いこともある
274 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 14:36:21 ] >>272 やってやれんことはないな void hoge(double &d) { } hoge(*(double *)NULL); hoge(*(double *)123);
275 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 14:37:23 ] >>271 const参照になるけど、 ・良いかどうかは別にして、コンストラクタの暗黙呼び出しが使える。 ・一時オブジェクトが渡せる。 という利点はある。 struct IntX { int n; IntX():n(0){} IntX(int argn):n(argn){} }; void test(const IntX& a){ std::cout << a.n << std::endl; } void test2(const IntX* a){ std::cout << a->n << std::endl; } int main(){ test(IntX()); test(10); //test2(&IntX(20)); //左辺値でないのでコンパイル不可 return 0; } あと、>>272 がツッコミ入れてくれた通り、 >>270 で書いた *static_cast<const char*>(NULL) みたいなネタは 実際のプログラムでやったら(無効な参照を作ったら)駄目だからね。
276 名前:265 mailto:sage [2008/07/25(金) 14:47:48 ] ふむふむ、なるほど。よく分かりません\(^o^)/ もう少し理解を深めてから出直したいと思います。
277 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 14:48:21 ] このスレか別のスレかわからないが最近同じネタをやってて、 参照が追加になったのは演算子のオーバーロードやコピーコンストラクタで 必要に迫られたからということらしい。 通常では戻り値はいいとして引数で使うと変数の変化が追いにくくなるので 多用はしないということだった。
278 名前:265 mailto:sage [2008/07/25(金) 14:55:17 ] C++の機能拡張に合わせて追加された、ということでしょうか。 同じネタが上がるということは、同じ疑問を持つ人がいるということですかね。 オーバーロードやコピーコンストラクタのあたりも見直してみます。
279 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 14:56:12 ] >>274 その場合は呼び出し元に問題があることが確定するのが、参照にしとく利点になるかな? ポインタだと、渡された側でヌルチェックすべきかどうか気になってしまう。
280 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 14:57:23 ] >>276 まだ勉強中って書いてあったね、ごめん。 慣れるまで、参照でなければならない箇所以外は ポインタで良いと思うよ。 たぶん、経験が自然に教えてくれる。
281 名前:デフォルトの名無しさん [2008/07/25(金) 14:57:42 ] hoge(*(double *)NULL); こんなん落ちないの?
282 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 15:01:25 ] 落ちると思って良い。 ちなみに言語規約違反な。
283 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 15:04:08 ] 間違った。規約じゃなくて規格。
284 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 15:08:09 ] C++でC言語のキャスト使うのやめれ
285 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 15:08:49 ] そういうときは未定義動作っていうんだ。コンパイルはできちゃうからね。
286 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 15:13:29 ] #define NULL reinterpret_cast<void*>(0)
287 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 17:21:06 ] BCCでの質問です。 ファイル間のインクルードの関係が以下の時、変更してないファイルも毎回コンパイルされるんですが回避策ってありますか? A.h B.h(include A.h) A.cpp(include A.h) B.cpp(include A.h,B.h) オナがいします。
288 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 17:22:52 ] >>287 ヘッダを変更しなければいいだけじゃないの?
289 名前:デフォルトの名無しさん [2008/07/25(金) 17:31:40 ] C言語勉強中なのですが、理由が知りたいです。 簡単なプログラムなのですが、回答よろしくお願いします void hogefunc(char *); void main() { char a[256] = "abc 0001"; hogefunc(a); } void hogefunc(char *tmp) { char b[256]; strcpy(b,tmp); } ////////////// デバッグを行うと、bの中身が"abc"のみでaの中身"abc 0001"が文字列コピーできていません。 予想だと、aの中身とbの中身は同じになると思ってました。なぜ0001が切られたのでしょうか? よろしくお願いします
290 名前:289 mailto:sage [2008/07/25(金) 17:34:42 ] 全て打つ前に転送してしまいました・・ このプログラムの場合、aの中身とbの中身を同じにするにはどうすればいいでしょうか?
291 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 17:34:57 ] そんなはずがない。なんかの見間違いなんじゃないか
292 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 17:35:57 ] void hogefunc(char *); void main() { char a[256] = "abc 0001"; hogefunc(a); } void hogefunc(char *tmp) { char b[256]; strcpy(b,tmp); printf("%s",b); } で試したけどちゃんと表示されてました
293 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 17:35:58 ] >>289 >>290 んなこたぁーない もう少しデバッグのステップ続けてみ
294 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 17:36:21 ] >>287 どうやってコンパイルしてる? make 使ってるのなら makefile 見せてみ
295 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 17:37:42 ] "abc 0001" ^ 実はこれが\0というオチを予想
296 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 19:01:40 ] >>288 ,294 どうやらファイル名が長すぎるのが原因のようでした。 最小限の再現作ってたらincludeのみのヘッダファイルが二個だけになったので^^;
297 名前:デフォルトの名無しさん [2008/07/25(金) 19:11:07 ] 一様乱数を生成する関数のソースについて質問があります。y=1/sqrt(2)*exp(-1/2*x*x)の計算で In function `GaussRandom':: undefined reference to 'sqrt’と In function `GaussRandom': : undefined reference to `exp'というエラーがでて実行できません。もちろん<math.h>は定義しました。 レポート課題なのでマジで困ってます。是非教えてください。ソースを下に載せておきます。 ちなみにxが一様乱数で、yが正規乱数です。 double GaussRandom() { double x; double y; x=UniformRandom(); y=1/sqrt(2)*exp(-1/2*x*x); return y; } double UniformRandom() { double x; int r=1; r=1229*r+351750; x=r/1664501; return x; }
298 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 19:29:31 ] >>297 お前いい加減にしろよ。
299 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 19:53:42 ] >>289 変数寿命が切れてるから上書きされているんじゃないの?
300 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 20:23:03 ] クラス内の関数ポインタでつまづいた。 分からない、全然分からない。 どこが分からないのかすら分からない。
301 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 20:28:50 ] 普通の関数ポインタはわかるのか? じゃあメンバ関数ポインタでぐぐるんだ
302 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 20:35:00 ] ええ、それで調べているんですけど、どうしてこんなに難解なのかと小一時間(ry 関数ポインタをメンバに含めると初期化できませんよね?こんな風に void (*pf[])() = {hoge, piyo, foo}; もう普通に関数にした方がいいのかな……。
303 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 20:39:47 ] オーバーロード演算子関数のポインタって取れないんですか? X (*f)(X &, X &) = +; X (*f)(X &, X &) = &+; X (*f)(X &, X &) = ::+; X (*f)(X &, X &) = &::+; X (*f)(X &, X &) = *::+; X (*f)(X &, X &) = operator +; X (*f)(X &, X &) = &operator +; X (*f)(X &, X &) = &::operator +; とか色々試したんですが「;が足りません」だの「operatorの位置が不正です」だのなんだの 構文に文句付けられて通りません 取り方があれば教えて下さい
304 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 20:42:20 ] それってただの関数ポインタじゃないか?
305 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 20:46:28 ] >>303 これでいけたぞ #include <stdio.h> struct X{}x; X operator+(X&, X&){printf("x");return X();} int main(){ X (*f)(X&, X&) = operator+; f(x,x); }
306 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 20:53:37 ] >>302 #include <stdio.h> class A{ static void (A::*pf[])(); public: void hoge(){ printf("hoge"); } void piyo(){ printf("piyo"); } void foo(){ printf("foo"); } void call(){ for(int i = 0; i < 3; i++) (this->*pf[i])(); } }; void (A::*A::pf[])() = { &A::hoge, &A::piyo, &A::foo }; int main() { A().call(); }
307 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 20:56:10 ] 俺には解読不能な文字列が多すぎて、目眩がしそう。
308 名前:デフォルトの名無しさん [2008/07/25(金) 21:24:13 ] 質問があるんですが,C++プログラムの変数の中に入っているデータをJAVAで取得することは可能なんでしょうか? データベースやファイルに書き込むなどの方法を取らずに、出来る方法があれば是非知りたいです。
309 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 21:27:34 ] >>308 JNIと相談してみてください。
310 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 21:29:00 ] Javaって他のJavaプログラムの変数の中のデータを取得することできるの?
311 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 21:30:24 ] >>306 ありがとうございます。 あとはゆっくり中身を理解したいと思います。
312 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 22:25:34 ] >>310 普通にclassファイルがあれば、望みは全て叶うでしょう。 実行中のプログラムとかCORBAとかその他みたいなプロセス間通信の事を言っているのなら、そういうインターフェースを自分で作ってください。
313 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 22:52:23 ] >>297 #include <math.h> と書いてありますか? 手元のコンパイラで試しますので、全文をどこかにアップロードしていただけますか?
314 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 23:04:42 ] >>313 pc11.2ch.net/test/read.cgi/tech/1215568848/919-921
315 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 23:18:23 ] >>312 >>308 に言ってあげてください
316 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 09:16:53 ] ビット演算で文字列中の大文字を小文字にしようとしてるのですが一文字目は出来ますがふた文字目以降ができません。 この場合ってループで回して一文字ずつ処理するしかないんですかね?
317 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 09:19:56 ] >ビット演算で文字列中の大文字を小文字にしようとしてる 言ってる意味が分からないのでソースで。
318 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 09:23:35 ] str |= 0x20; としか・・・
319 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 09:44:13 ] OK、では次はこれをソースで。 >のですが一文字目は出来ますがふた文字目以降ができません。
320 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 09:45:24 ] OKってようするに、わからないなら答えなくっていいです。 ソースだせソースだせってわからないだけでしょ?それをソースだせって馬鹿なの?
321 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 09:48:35 ] ソースが無くてトンカツが食えるか!
322 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 09:48:51 ] w
323 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 09:52:29 ] 1レス目でソース出してれば1レスで問題点が返ってくるレベルと予想
324 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 09:56:49 ] 文字列がマルチバイトを含まないことを祈るばかりです。
325 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 12:29:55 ] 一文字目は出来てる>>316 さんがマルチバイト文字くらいで困るわけ無いじゃないか
326 名前:デフォルトの名無しさん [2008/07/26(土) 12:59:33 ] >>309 JNIを調べて試してみましたが,自分の場合は使えなさそうです. JAVAソースを書いて→ヘッダー作成→C++ソース作成 という順序のようですが,今の状態ではC++ソースとJAVAソースが全然別のアプリケーションとして完成していて, C++アプリで使っているデータをJAVAで扱いたいという事なんですが…。 C++でデータを自分自身のIPに送って,JAVAでそれを取得するというのを今考えているんですが….
327 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 13:04:53 ] テキストファイルに書き込む→読み込む
328 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 13:06:25 ] 自前でシリアル化して通信すれば
329 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 13:19:36 ] >>10 (2)だと、クッキーの設定はちゃんとしてるのに書き込み確認画面のまま止まってる。 つまりクッキーの設定がうまくいってないみたいなんだが、デバッガで文字列を確認してみても正常だし そのデバッガで確認した文字列を手動で書いて送信するとうまくいく。
330 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 13:20:27 ] すみません誤爆しました。
331 名前:デフォルトの名無しさん [2008/07/26(土) 14:00:26 ] >>327 それでも一応可能なんですが, 取得したデータに対応した動きみたいなモノを作らないといけない為, JAVA側でテキストファイルをずっと参照し続け,更新があった場合○○する. といった風な感じになってずっと参照し続けるというのが気持ち悪いから避けたいんです.
332 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 14:01:00 ] >>326 プロセス間通信とか、XMLでシリアライズしたのを渡すとか。
333 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 14:55:33 ] 1〜10までの偶数を書き出すプログラムでもっと簡単なコードがあったら教えてください。 自分で書いたのは↓です。 #include <iostream> using namespace std; int main() { int i; cout << "1〜10までの偶数を出力します\n"; for(i = 1; i <= 10; i++){ if(i % 2 == 1){ continue; } cout << i << "です\n"; } return 0; }
334 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 14:56:34 ] for(i = 2; i <= 10; i+=2){ cout << i << "です\n"; }
335 名前:デフォルトの名無しさん [2008/07/26(土) 14:58:06 ] for(i = 1; i <= 5; i++) cout << 2*i << "です\n";
336 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 14:59:02 ] >>334 335 ありがとうございます
337 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 14:59:38 ] cout << "2, 4, 6, 8, 10です\n";
338 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 15:01:39 ] ウケタw
339 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 15:07:52 ] そんなに面白くはない
340 名前:デフォルトの名無しさん [2008/07/26(土) 15:08:35 ] ↓次の方どうぞ
341 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 15:31:54 ] 繰り返し文を利用して ☆ ☆☆ ☆☆☆ ☆☆☆☆ ☆☆☆☆☆ と表示させるコードを書いてみたのですが、もっと簡単に書く方法ありませんか? #include <iostream> using namespace std; int main() { int i; for(i = 1; i <= 5; i++){ if(i == 1){ cout << "☆\n"; } else if (i == 2){ cout << "☆☆\n"; } else if (i == 3){ cout << "☆☆☆\n"; } else if (i == 4){ cout << "☆☆☆☆\n"; } else if (i == 5){ cout << "☆☆☆☆☆\n"; } } return 0; }
342 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 15:34:26 ] ひょっとしてそれはギャグで言っているのか?
343 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 15:35:55 ] 普通の小学生ならカウンタの値と☆の数に関連性を見出せる筈
344 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 15:36:47 ] >>341 cout << "☆\n☆☆\n☆☆☆\n☆☆☆☆\n☆☆☆☆☆";
345 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 15:41:25 ] >>341 そこはif文じゃなくて、switchで場合分けするべきだと思うんだ。
346 名前:デフォルトの名無しさん [2008/07/26(土) 15:42:47 ] >>345 いやswitchにしてもまだおかしいだろwwww
347 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 15:44:04 ] 少し考えるので時間ください
348 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 15:46:10 ] hoshiHyouji(size_t nannko)という関数を作ればいいんじゃに
349 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 15:53:45 ] 関数はまだ習ってないのでわからないです。 #include <iostream> using namespace std; int main() { int i; int j; for(i = 1; i <= 5; i++){ for(j = 1; j <= i; j++){ cout << "☆"; } cout << '\n'; } return 0; } これでも同じように表示されたましたけど 考え方はあってますか? それとも、もっと簡単な方法があるのでしょうか?
350 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 15:56:42 ] あってると思うけど 個人的に for(i = 0; i < 5; i++){ for(j = 0; j < i; j++){ の方が好き
351 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 15:58:14 ] >>350 なるほど0からのカウントですか。 もっと分かりやすいコードが書けるように頑張ってみます。
352 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 15:58:55 ] >>349 そこは繰り返しじゃなくて再帰を使うべきだな。 void print_hosi(int num); void print_hosi(int num) { if ( num <= 0 ) { return; } for ( int i = 0; i < num; i++ ) { cout << "☆"; } cout << endl; print_hosi( num - 1 ); }
353 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 16:10:37 ] >>350 すいません、自分が指摘するのはあれなんですが ☆ ☆☆ ☆☆☆ ☆☆☆☆ ☆☆☆☆☆ と表示させるなら for(i = 0; i < 5; i++){ for(j = 0; j <= i; j++){ だと思います。
354 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 16:14:39 ] 俺なら for(i = 0; i < 5; i++){ for(j = 0; j < i+1; j++){ にするかな、気分の問題だけど
355 名前:デフォルトの名無しさん [2008/07/26(土) 16:17:28 ] for(i = 1; i <= 5; i++) for(j = 0; j < j; j++)
356 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 16:18:08 ] 俺には j < i であってるように見える。
357 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 16:19:28 ] >>356 それで実行したら ----------- 改行 ☆ ☆☆ ☆☆☆ ☆☆☆☆ ----------- でした。
358 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 16:19:33 ] >>356 は>>353-354 宛
359 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 16:29:21 ] まぁ for(i = 0; i < 5; i++){ cout << "☆"; for(j = 0; j < i; j++){ cout << "☆"; } cout << "\n"; } でも出来るけど、>>355 が正解だろうな。
360 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 16:45:24 ] でもこの手のはCSVやURLクエリのように区切りが出てきて for(int i=0; i<5; i++){ std::cout << "☆"; for(int j=0; j<i; j++){ std::cout << ","; std::cout << "☆"; } std::cout << "\n"; } みたいな感じに落ち着くことも多い。
361 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 16:47:44 ] #include <iostream> #include <iomanip> int main() { int i, j; std::cout.fill('☆'); for(i = 1; i <= 5; i++) std::cout<<std::setiosflags(std::ios::right)<<std::setw(i)<<""<<std::endl; return 0; }
362 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 17:00:18 ] ('☆')←何この顔バカにしてるの?
363 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 17:09:26 ] >>362 なんだと
364 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 17:09:38 ] std::string str; for(int i=0; i < 5; i++) { str += "☆"; std::cout << str; } std::cout << "\n";
365 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 17:11:16 ] >>362 寄生獣ですね、わかります。
366 名前:デフォルトの名無しさん [2008/07/26(土) 19:54:58 ] サービスとして動くプログラムのサンプルをやってるんですが上手くいきません StartServiceCtrlDispatcher()で失敗します GetLastError()で1063が取れるんですけど、どうすればいいんでしょうか? 環境はxp sp2、vc++2005でやってます void ErrorHandler( char *s, DWORD err ) { std::cout << s << std::endl; std::cout << "Error number: " << err << std::endl; ExitProcess( err ); } void WINAPI ServiceMain( DWORD argc, LPTSTR *argv ) { // 空 } void main() { char *SERVICE_NAME = "BeepService"; SERVICE_TABLE_ENTRY serviceTable[] = { { SERVICE_NAME, (LPSERVICE_MAIN_FUNCTION)ServiceMain }, { NULL, NULL } }; // SCMで登録する BOOL success = StartServiceCtrlDispatcher( serviceTable ); if( !success ) ErrorHandler( "In StartServiceCtrlDispatcher", GetLastError() ); }
367 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 20:23:00 ] >>366 よくわからんが、ちゃんとサービスとしてSCMのデータベースに登録済みで、 SCMからサービスとして起動されたときにそういうエラーが出ているの? ただのコンソールアプリとして普通にキックしたときに StartServiceCtrlDispatcher()が失敗するのはただの仕様なんじゃないの