[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 05/09 19:27 / Filesize : 148 KB / Number-of Response : 639
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

スレ立てるまでもない質問はここで@ム板 103匹目



1 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 18:04:14 ]
質問する前にGoogleで検索しましょう。www.google.co.jp

プログラム・ソフトの使い方は PC 初心者板やソフトウェア板へ。
ウイルス、ハッキング・クラッキングを求めるような発言は禁止です。
Javascript は Web 制作板、CGI は Web プログラミング板へ。
業界談義、愚痴はプログラマ板へどうぞ。
ゲーム関係の話題はゲーム製作板へどうぞ。
ネタ、板とは関係の無い話題はご遠慮ください。

前スレ
スレ立てるまでもない質問はここで 102匹目
pc12.2ch.net/test/read.cgi/tech/1257481818/


357 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 03:55:34 ]
ちょっと待て

> if(d[i][0]==d[i][1]==d[i][2]==d[i][3]==d[i][4]==-1)

何だこれは

358 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 04:01:49 ]
>>357
フリースポットやパンチ済みのとこには-1を入れて
1列目〜5列目の縦列にビンゴが無いか捜索してる

5分で書いたので型とか適当だけど流れだけってことで。

359 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 04:06:18 ]
リアルタイムで開けていくシステムじゃないと、ビンゴの意味ってないんだよね
それなら最初からクジ形式にしとけと。

360 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 04:15:53 ]
>>358
仮言語だったのね、了解
C/C++ とかじゃまともに動かないコードだったもので

361 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 05:01:29 ]
>>355
ありがとうございます。やってみます。

◆仕様
用意された複数のビンゴカードデータの中から、ビンゴになったカードを探し出すプログラム

◆前提
ビンゴカード;データとしてプログラムに覚えさせる
ビンゴゲーム:他プログラムで実行

1. カードデータは用意する。(100件くらいのビンゴカードのデータを用意)
2. ビンゴカードのデータは登録順に数字を振りあてられる
3. 他ソフトでビンゴを実行する
4. ビンゴソフトで出た順に1-99までの数字をプログラムに入力していく。
5. 数字の一致しているビンゴカードナンバーを表示
6. 用意されたデータからリーチ・ビンゴになったカードのナンバーを表示する

以上です。
難しいですね。ほんとにありがとうございます。

362 名前:デフォルトの名無しさん [2010/01/24(日) 08:21:45 ]
この問題を
ttp://cid-bb07f1eec42c2c56.skydrive.live.com/self.aspx/.Public/DisablingAccer.PNG#resId/BB07F1EEC42C2C56!143
避ける方法を教えてクリ

363 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 11:22:23 ]
>>361
ビンゴカードといっても5x5なのか3x3なのかとか、どんなサイズにも対応するのかとか
数字を入力するのはテンキー?キーボード?PC端末が目の前にあるわけ?とか。
ビンゴカードナンバーを表示するのは電光掲示板?ディスプレイ?とか
CUI?GUI?
専門のデザイナーを雇って「美少女がカードナンバーが書かれたボードを持ってる図」とかやるのか?とか。


あとから「見栄え悪いんだけど」とか言って修正させるのなナシだぜ。

364 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 11:47:50 ]
こういう客から、後から文句を言われない仕様をヒアリングして
作成するのだから、15万円は高くない。

365 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 14:35:39 ]
処理の軽い擬似乱数の発生方法を教えてください
シードになる整数sと整数nを渡されたら1〜nまでの乱数を生成するような感じで
偏りの無さよりも処理の軽さを優先したいのですが、
毎回シードを変形させてnの剰余を取るような感じでいいでしょうか?
大体一回の処理で100万回くらい使われそうな部分なのですが



366 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 14:45:54 ]
最近のハードにはCPUのクロックをはるかに上回る速度で量子物理学的に安全な乱数を生成する専用の回路が備わっていて
普通の商用コンパイラ使ってれば標準ライブラリの乱数生成関数で問題ない事が多い。

367 名前:365 mailto:sage [2010/01/24(日) 14:50:48 ]
回答ありがとうございます
あまり乱数生成部分をいじっても速度の向上にはならないということでしょうか
別の部分の処理を見直してみます

368 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 15:34:58 ]
/dev/random を必要なだけ( 100万 x nバイト)読む、という手も

369 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 15:35:46 ]
止めろバカ。貴重な共有リソースが枯渇する。

370 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 15:37:12 ]
>>366
どこの電波を受信してるんだ君は。

371 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 15:46:23 ]
>>368
エントロピープールが枯渇して読み込みがブロックするようになるぞ
/dev/urandom を使え(あるなら)

372 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 16:05:41 ]
答え1
とりあえずMT使っとけ

答え2
100万ぐらいならPark and Millerの最低基準生成系でいい。
LSBには規則性があるし、2次元以上で相関もあるけど。
整数の乗算がハードウェアでできれば軽い。
定数での剰余は工夫すれば除算なしでできる(うまくすればコンパイラがやってくれる)。

373 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 16:44:49 ]
MT よりは SFMT。
ttp://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/index-jp.html

374 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 00:36:44 ]
>>371
逆では?

375 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 00:55:08 ]
>>374
知らないなら、黙ってれば良いのに。
linux.die.net/man/4/urandom



376 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 01:02:40 ]
ほんとだ。逆だと思ってた

377 名前:デフォルトの名無しさん [2010/01/25(月) 09:51:22 ]
今はvbaでプログラムを作っているのですが、
独立したプログラム(.exeファイルなど)も作りたくなってきました
プログラム言語は何が良いでしょう?
とりあえずC++をやってみましたがすぐに挫折しました
VB.netの他に何か良いもののはありますか?

378 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 10:13:16 ]
C#

379 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 10:21:51 ]
そもそも何を作りたいのかも分からないのにどうしろというんだ?
作るものが分からない状態で道具を選ぶなど愚か以外の何者でもない。

380 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 10:28:37 ]
愚か者が使える言語を質問しているのだろう。

381 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 10:53:27 ]
自分ができる範囲を下積みによって増やすことで初めてやりたいことが見えてくることもある

382 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 10:54:12 ]
>>377
HSP

383 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 13:16:38 ]
VBでいいんじゃね
メモリやバイナリをさわりたくなればほっといてもCにくるだろう

384 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 13:34:17 ]
なぜexeだと独立していると思ったのだろうか

385 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 13:35:15 ]
>>381
創らなくても既存のアプリを発見したり



386 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 15:10:05 ]
ソースファイルとヘッダファイルって
多く分けたほうがコンパイル時間は短くなりやすかったりしますか?


387 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 15:24:15 ]
基本的にソースファイルは別のコンパイル単位から参照されその都度コンパイルされる事を頭に入れておかなければならない。
ちなみにひとつのソースファイルは変則的なincludeさえしていなければひとつのコンパイル単位として扱われるので
別のコンパイル単位が編集されても関係ないので再コンパイルされずに済む。
そう考えると多く分けた方が速い。
ぶっちゃけひとつの関数にひとつのソースファイルなんてしてもいい。
コンパイル単位を横断する最適化も今時はコンパイラの設定次第でどうにでもなるし。

388 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 15:50:10 ]
メンテナンス性で判断すべき。

コンパイル時間が5時間か10時間かの差になる、というのでもない限り。

389 名前:デフォルトの名無しさん [2010/01/25(月) 16:05:38 ]
>>386
make使ってる前提だけど
モジュールの切り分けがうまくいっていて
修正時に一部のモジュールだけの変更とかのときは短く出来る
全部のソースに共通のヘッダを書き換えるような変更のときは
結局全部コンパイルすることになる
どういうシーンでどういう動きになるか意識出来てれば効率よく開発出来る

390 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 18:08:34 ]
実際に分けてみたらコンパイル早くなりました
他ソースから参照されるのは基本的にヘッダファイルだろうから
ある意味、ヘッダファイルでインタフェースさえ完成していれば
ソースだけがコンパイルされてウマーなわけですね

391 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 18:57:23 ]
放置するとヘッダ地獄に

392 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 00:25:42 ]
pimplでニヤニヤして
templateで打ちのめされる

393 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 00:37:18 ]
C++で利用できるSVG形式の読み込み〜描画ができるライブラリを探してるんですが、
どこで聞けばよろしいでしょうか?

394 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 10:30:10 ]
pc11.2ch.net/pcqa/

395 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 11:59:43 ]
Windows上で、C++ホスト、C#クライアントでローカルの
(同一マシン上のプロセス間)通信を行いたいと考えています。
通信は同期的に行い(それぞれでイベントが発生する度に通知)、
サーバー、クライアント間は双方向で送受信を行います。
クライアントとホストはとりあえず一対一で十分で、
複数のクライアントの同時接続等は必要ありません。

このようなプロセス間通信を行うのに適当な手法を教えて頂けないでしょうか。




396 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 12:55:38 ]
名前付きパイプとか

397 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 13:04:57 ]
認証するならnamed pipeかsocket。
理由: 認証後つなぎっぱなしにすれば良いから。

398 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 14:45:46 ]
名前付きバイブ

399 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 15:42:48 ]
>>396-397
名前付きパイプ試してみます。
C++からはCreateNamedPipe()、C#からはWCFですかね。
どうもありがとうございました。

400 名前:デフォルトの名無しさん mailto:2fast2@live.jp [2010/01/26(火) 17:35:52 ]
5GBくらいのデータが入っているテキストファイルを固まらないで
ソートや重複削除できるソフトなど知っている方いらっしゃいますか?
色々調べてはいるんですが、どれも固まってしまってだめでした。
なければVBとかで作ろうかと思っています。
よかったら回答お願いします

401 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 17:47:21 ]
マルチスレッドで処理するとか。
VB.NETなら簡単にできるぞ

402 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 17:51:29 ]
メモリが少ないというのがで固まってるんだったら
ワーキングメモリが少なくて済むソートアルゴリズムを選択するべき。

403 名前:デフォルトの名無しさん [2010/01/26(火) 18:01:43 ]
interfaceAbcを直接実装せずに
baseAbcImplを挟んでこれを継承させる形でAbcを実装したクラス群がある場合、
baseAbcImplが置かれる理由は何が考えられますか?

あるオープンソースの設計を読んでいて疑問だったので

404 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 18:13:08 ]
最終的な具象クラスのいずれにも共通する部分だけを実装してあるのでは
各具象クラスそれぞれに同じ共通コードを書くのは無駄だから、
共通部分は上のクラスに持っていって、異なる部分だけをそれぞれ個別に実装する

405 名前:デフォルトの名無しさん mailto:2fast2@live.jp [2010/01/26(火) 18:17:24 ]
>>401さん
レスありがとうございます。
.NETで簡単にできるんですね。もし宜しければでいいんですが、何か参考になるものなど
ありませんでしょうか?無理なら自力で色々調べてやってみます。

>>402さん
レスありがとうございます。アドバイスありがとうございます。参考にさせて頂きます。



406 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 18:20:54 ]
awkに関する質問です
(awkでなくてもいいんですが、簡単な処理はawkが一番手っ取り早いと聞いたので

下のような2つのファイルから
平均を出したいんですがどのようにすればいいのでしょうか?

---file A---
1 87
2 89
3 40
4 90
5 33

---file B---
1 45
2 22
3 78
4 60
5 19

407 名前:406 mailto:sage [2010/01/26(火) 18:29:33 ]
ほしい結果は

---file C---
1 (87+45)/2
2 (89+22)/2
3 (49+78)/2
4 (90+60)/2
5 (33+19)/2

です。

408 名前:406 mailto:sage [2010/01/26(火) 18:33:28 ]
---sum.awk---
{
if(NR==1){
a=a+1;
}
}

END{
PRINT a;
}

ととりあえず書いてみて
awk -f sum.awk fileA fileB
と実行しても、合計されず
file Bの45という値しか出てこないです

次のfileを読み込むたびに変数は初期化されてしまうのでしょうか?
awkではファイルどうしの平均を求めるのは無理なのでしょうか?

409 名前:406 mailto:sage [2010/01/26(火) 18:44:47 ]
なんでできないか少しわかりました。
>>408の結果は間違いで
file Aの87が出力されるみたいです。

どうやらNRは新しいファイルを読み込んでもリセットされないのですね。

NRがリセットされず
file Cの1行目はNR=6と数えられるっぽいですね。
ってことはNRをデータ数5で割った余りで
判定させるとかすればできそうです。

できそうですが、もうちょっとスマートなやり方あったらぜひ教えてください。

410 名前:406 mailto:sage [2010/01/26(火) 18:46:15 ]
>>409
× file Cの1行目は〜
○ file Bの1行目は〜

411 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 20:29:23 ]
>>405

vb.net(というか.NET Framework)はスレッドが使いやすい。
System.Threading.Threadでググればどういうのかが分かる

他にも.NET 4.0から(だっけ?)
Parallelとかで簡単に並列処理を行えるし。

C#でも良し、VB.NETでも良し、C++/CLIでも良し、
IronPythonでも良し、IronRubyでも良し、
F#でも良し、J#でも良し

好きな言語を選んで頑張ってくれ

412 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 21:24:57 ]
2次元空間である4点があります。A(x1,y1),B(x2,y2),C(x3,y3),D(x4,y4)
この4点で四角形が出来ますが直線E(x5,y5)-(x6,y6)と
交わっているかどうかを計算式?か何かで求める方法を教えてください
Cプログラムで教えていただけると幸いです。(公式などでもいいです)


413 名前:質問 [2010/01/26(火) 21:29:08 ]
exeファイルの大きさが大きくなると出てくる弊害ってどんなものがあるでしょうか?

414 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 21:44:56 ]
>>412
つ[線分 交差判定]

415 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 22:09:29 ]
>>413
ダウンロードに時間がかかる



416 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 22:18:22 ]
>>413
ウィルスチェックに時間が掛かる
ネットワークドライブとかにあると起動にも時間掛かる

100MB 超えてる exe とかざらに有るけど

417 名前:質問 [2010/01/26(火) 22:28:21 ]
>>415
>>416
なるほど。その程度の問題なら大したこと無いですね。

他にパフォーマンスやメモリ関係の上限に関わる問題はありませんか?

418 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 22:40:43 ]
メモリの上限はexeのサイズよりも
そのexeがどんだけheap使うかっていう問題
1kBのexeでもメモリ食いつぶせる

419 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 22:45:44 ]
32ビットアプリなら現在の潤沢なメモリを食いつぶすのは不可能。

420 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 22:56:49 ]
あんま関係ないけど、実行ファイルとかドライバってせいぜい数MBで収まって欲しくね?

421 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 23:42:09 ]
javaでprivate static finalにset/getを付ける事は愚かな事ですか?

422 名前:デフォルトの名無しさん [2010/01/26(火) 23:45:44 ]
>>419
ヒント:マルチプロセス

423 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 23:49:28 ]
クラスAとクラスBはsingletonパターンを実装しています
public static HogeA getInstance();
public static HogeB getInstance();
HogeAのあるメソッドでは、HogeBのインスタンスを使った処理が必要です
またHogeBのあるメソッドでは、HogeAのインスタンスを使った処理が必要です

つまり、クラスAとクラスBは相互に依存しあっています
このような状態はなるべく避けたほうがいいのでしょうか?

424 名前:デフォルトの名無しさん [2010/01/26(火) 23:52:45 ]
なぜ避けた方がいいと思ったの?

425 名前:423 mailto:sage [2010/01/27(水) 00:00:22 ]
>>424
後でクラスを修正する可能性が高いので、
バグを生み出す原因になると思ったからです



426 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 00:08:38 ]
結論が出たな。

427 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 00:42:12 ]
>>423
先に初期化された方がまだ初期化されない方にアクセスするときに待つようにすればいい

428 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 00:49:46 ]
>>421
getはともかくsetできないんじゃ……。
それはともかく、ClassName.getInstance()でprivate static finalな値を返すのはしばしばやっている。

429 名前:423 mailto:sage [2010/01/27(水) 01:01:39 ]
>>427
わかりました

>>426>>427のどっちのほうが一般的なんですかね?

430 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 01:28:41 ]
426

431 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 02:07:12 ]
>>407

欲しいのは平均値の計算結果じゃなくて、その式の文字列なの?
計算結果でいいのならこんなのとか。

FNR == 1{
    filecount += 1
}
{
    sum[FNR] += $2
}
END {
    for (i=1; i<=FNR; i++)
        print i, sum[i]/filecount
}

iいずれにしもて、awk なら awk スレガあるからそっちのほうがいいんじゃないか?


432 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 07:13:25 ]
>>422
exeが使うヒープの話をしていたのに、
突然複数立ち上げた場合に話を逸らして恥の上塗りをするのはみっともない。

433 名前:406 mailto:sage [2010/01/27(水) 07:34:14 ]
>>431
ほしいのは計算結果です。
ありがとうございます!
シンプルですばらしい
できなかったらまたawkスレで聞いてみることにします
ありがとうございました

434 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 09:59:21 ]
スレ違いだったらすいません
例えば2chのdatファイルは
pc12.2ch.net/tech/dat/1262163854.dat
になりますが、これをftpでダウンロードすることは出来ますか?


435 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 10:08:34 ]
http://
の部分を
ftp://
に書き換えてブラウザから試してみれば?



436 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 10:09:07 ]
出来ませんし、その必要性も皆無です。

437 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 10:20:14 ]
>>435>>436
ありがとうございました
何か意味のないことをしていたようです

438 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 10:22:26 ]
httpが通らない監獄からアクセスするとか。

439 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 10:32:53 ]
監獄とは何でしょうか
ぐぐったら監獄実験ばかりでてきて怖いです

440 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 10:35:17 ]
監獄=刑務所


441 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 11:12:21 ]
viで今カーソルがある単語を検索するって
どうやるんだっけ?
そういうコマンドってなかったっけ?

442 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 11:38:29 ]
1掛ける0も0掛ける0も1掛ける1も1232掛ける1425も計算速度はおなじですか?

443 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 11:56:23 ]
CPUがひとつのワードに対して行う演算は定数時間

444 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 11:59:24 ]
2で掛ける時と3で掛ける時は条件によって違う場合がある

445 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 12:14:12 ]
>>443
乗算や除算などは複数クロックにまたがる動作になっていて、
手続きの途中で答えが出たら打ち切るなどで、時間が変わる場合もある。



446 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 13:19:41 ]
>>441
*または#

447 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 13:28:24 ]
>>446
おお!これだこれ
ありがとうございます!

448 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 16:10:57 ]
>>442
にしてもなんで全角と半角ごっちゃなの?
なんか見てて気持ち悪い事この上ないんだが

449 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 17:08:09 ]
>>448
そういう人は専ブラの置換機能を使うといいですよ
いくら啓蒙しようと実現不可能ですから

450 名前:デフォルトの名無しさん [2010/01/28(木) 19:49:15 ]
Cでマクロの引数に無理やりにでもブロック渡す方法ないの?

#define loop(ct, exp) for(int i=0; i<ct; i++) exp

loop(5, { if(i%2){ printf("%d\n", i); } });

みたいに。

451 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 20:30:32 ]
>>450
それでできるじゃん。
何が不満なの?

452 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 23:05:48 ]
ソース読んでたらこんなのあったんですが理解できません
なにをtypedefしてるんでしょうか?
アホの俺にも解るように人力コンパイルお願いします

typedef BOOL (WINAPI *phoge)(UCHAR aaa[64], UCHAR bbb[64]);

453 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 23:12:42 ]
>>452
関数ポインタをtypedefしている。
名前はphogeで呼び出し規約はWINAPIだが、それは_stdcallだっけ??
それで、引数がUCHARの固定配列を二つ。

という関数ポインタを定義してるように見えるね。

454 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 23:14:01 ]
抜けてた。
そのポインタの返り値はBOOL。

455 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 23:21:18 ]
ほれ

typedef bool (_stdcall *phoge)(char aaa[64], char bbb[64]);
bool _stdcall f(char a[64],char b[64]){
cout << a << endl;
cout << b << endl;
return true;
}
int main(int argc, _TCHAR* argv[]){ phoge p=f;
char a[64]="hello";
char b[64]="world";
p(a,b);
return 0;
}



456 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 00:37:36 ]
>>453-455
なるほど、ありがとうございます
用は関数も型宣言してしまえばポインタ操作でコール出来るってことですね

使い道は解ったのだけど何でこのtypedefで
phoge型の変数を宣言できるようになるんでしょうか?
うーん意味は解ったのにコードが読めない・・・orz
関数をtypedefしてるから関数名の型ができる?


457 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 00:42:57 ]
phogeは「関数名」ではなく「型名」。
typedef int hoge;
のhogeと同様。






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

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

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