スポンサーサイト [Edit]
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


スポンサー広告 | 【--------(--) --:--:--】 | Trackback(-) | Comments(-)
OpenMP & HT [Edit]
VC2005 Professionalを使ってれば,OpenMP2.0がサポートされるというので,Pentium4 3.8GのHT状態を使い,MSDNのサンプルコード(下の続きを見てね)をコピペして繰り返し回数を1千万にし,/openmpを有効にして実行したら・・・

OpenMP無効の時と変化なしorz

なぜ?なぜなの??

“OpenMP & HT”の続きを読む>>
スポンサーサイト
[プログラム]C言語 | 【2007-05-25(Fri) 18:05:07】 | Trackback:(0) | Comments:(0)
sscanf_sについて [Edit]
VC8から,ssanfがWarningを吐くようになった.理由はセキュリティらしく,今後はssanf_sを使わなくてはならない.

ただ,単純に"_s"を付ければいいわけではなく,キャラクタ等バッファサイズが不定のものは,受け付けるサイズを明示的に指定しないと強制終了してしまう.すなわち,

char buf1[100], buf2[20], buf3[30];
int idata;
sscanf(buf1,"%s %d %s", buf2, sizeof(buf2), &idata, buf3, sizeof(buf3));

という感じ.

[プログラム]C言語 | 【2007-05-02(Wed) 12:29:37】 | Trackback:(1) | Comments:(0)
VC 2005でpow(int,int)が使えない [Edit]
とりあえずBaseClassesのコンパイルはおいといて,Platform SDKのinclude/atlっていうディレクトリに"atlbase.h"があったので,VCのプロパティにパスを追加してビルドしてみた.すると,

error C2668: 'pow' : オーバーロード関数の呼び出しを解決することができません。(新機能 ; ヘルプを参照)

なんじゃ,そら.おいおい,pow関数のオーバーロードで引っかかっちゃったよ.

問題の記述はこんな感じ.

pow(viX[j]-viX[k],2)

なんだよ,pow(int,int)ごときにcastやらなきゃいけないのかよ,と,

pow((int)(viX[j]-viX[k]),2)

のように変更して再度ビルド.したらまたエラー!おい,なめてんのかよ!!と切れまくったが,どうも「新機能:ヘルプを参照」っていうエラーメッセージが気になり,pow関数を調べたら,

Visual C++ 2005 では、ISO 標準にさらに準拠するために大きく変更されています。pow(int, int) のオーバーロードは、使用できなくなりました。このオーバーロードを使用している場合、コンパイラは C2668 を発生することがあります。この問題を回避するには、最初のパラメータを double、float、または long double にキャストします。

なんだよ!pow(int,int)つかえねーじゃん!!最悪だ.

ということで,pow(double,int)にcastしなきゃいけないようです.


[プログラム]C言語 | 【2006-06-19(Mon) 10:37:29】 | Trackback:(0) | Comments:(0)
Visual C++ 2005 Express Edition [Edit]
Visual C++がいつのまにやらフリーになってるなんて,知らなかった...超カルチャーショック.

当然試さなきゃいかんでしょ,ということでダウンロードしてインストール.すでにVisual Studio.net 2003がインストールされてるので,Platform SDKはこいつのを流用した.

インクルード・実行・ライブラリの場所を設定して,いざビルドしてみると・・・

error LNK2028: 未解決のトークン (0A000199) "extern "C" int __stdcall MessageBoxA(struct HWND__ *,char const *,char const *,unsigned int)" (?MessageBoxA@@$$J216YGHPAUHWND__@@PBD1I@Z) が関数 "int __cdecl main(void)" (?main@@$$HYAHXZ) で参照されました。

なんじゃ,こりゃ.いかにも設定が悪そうなメッセージ.どうやら,さらに設定しないといけないことがあるようだ.

ちゃんとMicrosoftのページを読むと,手順4にて"corewin_express.vsprops"っていうファイルを編集しないといけなかったみたい.関係ないだろ,と思って無視したのがあだ.

設定後,VCを再起動してビルドすると・・・うまくいった!とりあえずWin32の簡単なのは問題なさそう.

あとはDirectShowを使っているプログラムがちゃんと動くかどうかだな.

[プログラム]C言語 | 【2006-06-16(Fri) 15:45:12】 | Trackback:(0) | Comments:(0)
FC2カウンター
現在の閲覧者数:
リンク
RSSフィード
ブログ内検索
フリーエリア

カテゴリー
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。