スレを勃てるまでもないC/C++の質問はここで 4
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2008/09/17(水) 15:41:48過去ログ
スレを勃てるまでもないC/C++の質問はここで
http://pc11.2ch.net/test/read.cgi/tech/1167476845/
スレを勃てるまでもないC/C++の質問はここで 2
http://pc11.2ch.net/test/read.cgi/tech/1178503366/
スレを勃てるまでもないC/C++の質問はここで 3
http://pc11.2ch.net/test/read.cgi/tech/1187521676/
0765デフォルトの名無しさん
2008/12/22(月) 17:03:09C言語でWindowsAPIを使えばいい
Win32API,ウィンドウメッセージなんかでぐぐるといいが、
長いし(書くときはコピペするかウィザードで生成すればいいが)、少しとっつきにくいかもしれない
VCを使っているのなら、新規プロジェクト作成のウィザードから
Windowsアプリケーションを使うのもいい
どういうものを作りたいかによって選ぶべきと思う
0766デフォルトの名無しさん
2008/12/22(月) 17:05:05あなたの気のおもむくままに
0767デフォルトの名無しさん
2008/12/22(月) 17:05:59分かるには分かるが
面倒くせぇ
0768デフォルトの名無しさん
2008/12/22(月) 17:06:45回答ありがとうございます
Win32API?と、VCの機能を調べてみます
0769デフォルトの名無しさん
2008/12/22(月) 20:31:590770デフォルトの名無しさん
2008/12/22(月) 21:44:39CとC++は同じものだと考えてとりあえずは問題ない
というのも、C++はbetter Cという考えがあるから
「C++ではない純粋なC」でないといけないというのは
ちょっと特殊
0771デフォルトの名無しさん
2008/12/22(月) 21:47:21ファイルの拡張子を .c にすれば C になるはず
0772デフォルトの名無しさん
2008/12/22(月) 22:50:56なんでアドレスとか表示する意味があるんだ?
どうして、ポインターで指す必要があるんだ?
間接的にオブジェクトに代入してなんの意味がある?
ビット数の表示に意味なんてあるんだろうか?
いまやってることに、意味がない気がして・・
今、すげー・・やる気を失ってるところです・・
だれか・・元気付けてください・・
0773デフォルトの名無しさん
2008/12/22(月) 22:55:00すごく使うことになるのでとりあえず使い方をマスターしておけ
0774デフォルトの名無しさん
2008/12/22(月) 22:57:09お前の家の住所に意味はないのか?
例えば、「お前の家が見たい」って言われたとして、家ごとコピーして渡さなくても住所教えればいいだろ。そういうことだ。
0775デフォルトの名無しさん
2008/12/22(月) 22:57:30どう使うのか・・こう・・具体的に説明してくれるとありがたいです・・
0776デフォルトの名無しさん
2008/12/22(月) 22:58:01そ・・そういうことか!!!!!!!!
0777デフォルトの名無しさん
2008/12/22(月) 22:58:52なんでかっていうとめんどくさいからググレ
でも必要だから絶対覚えろ
・・・これは流石にひどいか
http://www7b.biglobe.ne.jp/robe/cpphtml/
ここのポインタの部分だけでもみるといいよ
C言語だったとしても内容変わらんから
0778デフォルトの名無しさん
2008/12/22(月) 23:23:27c=getc();
これで合ってると思うんですが、printf("c=%d", c);で表示すると入力したものじゃなくて変なのが入るんですがなぜですか?
0779デフォルトの名無しさん
2008/12/22(月) 23:25:02%cだ。
それだと。文字コードが表示される。
0780デフォルトの名無しさん
2008/12/23(火) 00:01:22100000個の要素を持った配列を渡すとき、「ちょっとこれサイズでかくね?」って思うでしょ
でもポインタ1個渡せば、あとはポインタの位置をずらしていくだけで配列を参照できるの
ねっ簡単でしょ
以上、ヴァンプ将軍のさっと簡単ハッキングでした
0781デフォルトの名無しさん
2008/12/23(火) 02:49:18先日Cの入門書を一通り学習し終えたのでwindowsアプリに手を出し始めました
しかしwindowsアプリではCの入門書でいうところの最初に学んだprintfやscanfのようなものが一切出てこず、違うものばかりです
ではそういったCの入門書ででてきてwindowsアプリの入門書では全くでてこない↑等のものはどこで使うのでしょうか?
また、書店にいくとCの関数辞典のようなものがありますがそういった書籍にのっているものも上記のようにwindowsアプリではでてこないものばかりなのでしょうか?
0782デフォルトの名無しさん
2008/12/23(火) 02:59:310783デフォルトの名無しさん
2008/12/23(火) 03:01:140784デフォルトの名無しさん
2008/12/23(火) 03:04:27Windowsでも一応コンソールアプリがあるけど、ふつーはprintf()とか標準入出力系の
関数は使いません。
それ以外の、ファイル入出力とか、文字種のチェックとか数学系とか時間計とかは使います。
ファイルにロックとかけるとか、ミリ秒単位で時間を扱うとか、ちょっとこった使い方をすると
WindowsのAPIとかを使うことになります。
0785デフォルトの名無しさん
2008/12/23(火) 03:09:27ありがとう、入門書で最初にやったことがいきなり不要扱いだったんで居間まで何やってたんだろう('A`)と少し不安になりました
プログラムを勉強するなら関数辞典は買っておけとよく言われるのですがこの関数辞典とは一般にC/C++のものをさすのでしょうか?
0786デフォルトの名無しさん
2008/12/23(火) 03:17:45そうだと思うけど、買う必要はないかな?
Cの標準関数の説明なら、ネットで探せばみつかるし。
http://www.bohyoh.com/CandCPP/C/Library/index.html
こういうやつとか。
0787デフォルトの名無しさん
2008/12/23(火) 03:23:32お気に入りにいれました
しかし結構何のことか全くわからん内容の関数とかあるんだなぁ・・・
0788デフォルトの名無しさん
2008/12/23(火) 03:30:22本を買うならリファレンスより、何とかクックブックとか何とかの技500とかみたいに、短いサンプルが
たくさん乗ってるやつのやつのほうがいいけど、オンラインでそういうやつあるかな?
0789デフォルトの名無しさん
2008/12/23(火) 08:59:44どうすればよいのでしょうか
敵の位置を変数「enemyposx」に入れてます
if(enemyposx<79.0)
{
enemyposx+=0.8;
}
if(enemyposx>113.0)
{
enemyposx-=0.8;
}
else
{
enemyposx+=0.8;
}
0790デフォルトの名無しさん
2008/12/23(火) 09:09:510791デフォルトの名無しさん
2008/12/23(火) 10:00:28if( x < 79 ) diff = +0.8 ;
if( x > 113 ) diff = -0.8;
x += diff;
0792デフォルトの名無しさん
2008/12/23(火) 10:17:59> ねっ簡単でしょ
ボブ! ボブじゃないか!
0793デフォルトの名無しさん
2008/12/23(火) 11:38:56できました。ありがとうございました
0794デフォルトの名無しさん
2008/12/23(火) 12:01:20でも解析とか始めるようになってデバッガーとか使い出してからやっと理解できたわ
0795769
2008/12/23(火) 15:13:54CLRオプションでコンパイルできないと言われましたがどうすればいいでしょうか?
0796デフォルトの名無しさん
2008/12/23(火) 16:10:58以下をご存じの方がいらっしゃいましたら、ご教授頂けましたらありがたいです。
環境はcygwin + g++です。将来的に linux でも使いたいと思っています。
異なる2台のHDDに各々数10GBのデータが入っています。
両方の HDD から、一度に512MB 程度づつ、データをメモリに読み込み、
逐次比較をしていくようなプログラムを作っているます。
HDD1台ごとに、一つのスレッドを作成し、スレッド内で HDD->メモリの
DMA 転送を行いつつ、dual buffer 構成にして別のスレッドで比較をしようと考えています。
HDD からメモリへDMA 転送をさせる方法を知りたいのですが、
普通に fread 文で読み込めば、勝手にDMA転送をしてくれるものなのでしょうか?
0797デフォルトの名無しさん
2008/12/23(火) 16:16:33プロジェクト作る時はCLRじゃなくてWin32のほうで
0798デフォルトの名無しさん
2008/12/23(火) 16:39:58DMA するかどうかはプログラミングの外の話じゃないかな。
それとメモリに読み込むより mmap した方が良いんじゃね?
0799デフォルトの名無しさん
2008/12/23(火) 18:15:48int a[n][2]という配列を作りたいのですが、
int **a;
a = (int *)malloc(n * sizeof(int *));
for(i = 0; i < n; i++){
a[i] = (int *)malloc(2 * sizeof(int));
}
でいいのでしょうか?
0800デフォルトの名無しさん
2008/12/23(火) 18:20:56int (*a)[2]で確保一回で済ますというのもあるな
0801デフォルトの名無しさん
2008/12/23(火) 18:46:49int (*a)[3];
a = (int *)malloc(n * sizeof(*a));
これでいいのでしょうか?
0802デフォルトの名無しさん
2008/12/23(火) 18:50:10Javaのほうが先にやってた俺は「参照が具体的な数値になったようなもんか」と考えたっけな
0803デフォルトの名無しさん
2008/12/23(火) 20:15:590804デフォルトの名無しさん
2008/12/23(火) 21:11:49ある程度コンピュータを知ってれば、アドレスのことでしょ?って思って
正確ではないにしろ、理解に詰まることはないんだけどね
Javaの参照とポインタは言葉通り、ちょっとニュアンスが違う。
そのあたりが"ポインタ"で詰まる理由のひとつかもね
0805デフォルトの名無しさん
2008/12/23(火) 21:52:39int (*a)[3];
a = (int (*)[3])malloc(sizeof(int [3]) * n);
だな
0806デフォルトの名無しさん
2008/12/23(火) 22:20:22プロジェクトの消去する方法がわかりません
ヘルプとかで、いろいろ探したりもしてみたんですが、わかりませんでした
どなたか、教えてください
0807デフォルトの名無しさん
2008/12/23(火) 22:36:04ソリューションエクスプローラーで右クリックしてメニューで削除を選ぶと削除される。
0808デフォルトの名無しさん
2008/12/23(火) 22:39:07でも、消えない・・
0809デフォルトの名無しさん
2008/12/23(火) 22:39:53ありがとうございました。
0810デフォルトの名無しさん
2008/12/23(火) 23:12:55も間違ってるよな
0811デフォルトの名無しさん
2008/12/24(水) 10:02:22http://www.asahi-net.or.jp/~yf8k-kbys/newcpp2.htmlのサイトにある、
//hello.cpp
#include <iostream>
using namespace std;
int main()
{
cout << "hello" << endl;
}
をコンパイルしたのですが、
MSVCRTD.lib(crtexew.obj) : error LNK2019: 未解決の外部シンボル _WinMain@16 が関数 ___tmainCRTStartup で参照されました。
C:\Documents and Settings\Owner\My Documents\Visual Studio 2008\Projects\test\Debug\test.exe : fatal error LNK1120: 外部参照 1 が未解決です。
とエラーが表示されコンパイルできません。
こんな初歩的な質問ですみませんが、どうすればコンパイルできますか?
またエラーの意味も出来れば教えてください。
0812デフォルトの名無しさん
2008/12/24(水) 10:16:38「Windows アプリケーションだっていうから
WinMain() を呼び出そうとしたら
そんな関数なかった」
解決法:
コンソールアプリケーションとしてプロジェクト作り直す。
0813デフォルトの名無しさん
2008/12/24(水) 10:24:37解決法とエラーの意味ありがとうございます!
無事コンパイルできました。
ここで疑問ですが、
win32コンソールアプリケーションとwin32プロジェクトの違いはなんなのでしょうか?
よければ教えていただきたいです。
0814デフォルトの名無しさん
2008/12/24(水) 10:27:100815デフォルトの名無しさん
2008/12/24(水) 10:28:55返答ありがとうございます
0816デフォルトの名無しさん
2008/12/24(水) 10:34:27win32プロジェクトはイベント割り込みを考慮して作る
たとえば「ウィンドウを再描画してくれ」といってきたりする(以下、イベント)
このようなイベントが起きたときにどう処理するかをプログラムしていく
だが、コンソールにはイベントがない
0817デフォルトの名無しさん
2008/12/24(水) 10:35:560818デフォルトの名無しさん
2008/12/24(水) 10:41:08なるほど、大まかに理解することが出来ました。
つまりは、イベントを考慮する場合はwin32プロジェクトで作れということですね
返答ありがとうございました
0819デフォルトの名無しさん
2008/12/24(水) 11:00:20現在http://www.asahi-net.or.jp/~yf8k-kbys/newcpp3.htmlのプログラム
//hello2.cpp
#include <iostream>
#include <string>
using namespace std;
int main()
{
string name;
cout << "こんにちは。私はコンピュータです。" <<endl;
cout << "あなたの名前を入力してください。" <<endl;
cin >> name;
cout<<name<<"さん。よろしく。"<<endl;
}
をコンパイルし、
画面を表示し、入力することにも一応成功しているのですが、
名前「小林」を入力し、エンターを押すと同時に「小林さん。よろしく」の表示を見るまもなく、
表示されると同時にウインドウが消えてしまいます。
これは正常な動作でしょうか?
0820デフォルトの名無しさん
2008/12/24(水) 11:10:59正常ですよ
0821デフォルトの名無しさん
2008/12/24(水) 11:12:22正常でしたか。安心しました。
回答ありがとうございます
0822デフォルトの名無しさん
2008/12/24(水) 11:13:34ところで、int main()と宣言しておきながらintを返さないサンプルを掲示しているような
ヘッポコサイトは参考にしない方がいいです。
0823デフォルトの名無しさん
2008/12/24(水) 11:31:43それ以前だと未定義だっけ?
>>819
デバッグなしで実行 (Ctrl+F5) すると
終了時に一時停止する。
>>822
>あなたの反応速度が遅いだけ
イミフ
0824デフォルトの名無しさん
2008/12/24(水) 11:34:32>>デバッグなしで実行 (Ctrl+F5) すると 終了時に一時停止する。
確かに一時停止しました!!参考になります
0825デフォルトの名無しさん
2008/12/24(水) 18:06:50VC6.0時代は
for(int i = 0; i < 10; ++i)
{
//いろいろ
}
printf("%d", i);
とすることができましたが、VC9.0ではprintfのところではすでにiが無効になってしまいますよね。
これって、C/C++が昔からこだわっていた「互換性を保つ」に反している気がするのですが、どうなのでしょうか?
VC6.0時代の解釈がC++の言語仕様上間違っていたので、直したとかなんでしょうか?
0826デフォルトの名無しさん
2008/12/24(水) 18:11:18VC6時代にはまだ正式な規格じゃなかったから。
.NET(2002)から対応したが、デフォルトではVC6互換だった。
2005からデフォルトがISO準拠になったが、プロジェクトのプロパティのC/C++ 言語の
for ループ スコープの強制準拠をいいえにすれば同じ動作になる。
0827デフォルトの名無しさん
2008/12/24(水) 18:14:45C++の最初の定義ではVC6.0の仕様だった。
その後変更になった。
0828デフォルトの名無しさん
2008/12/24(水) 18:54:22ありがとうございます。
良くわかりました
0829デフォルトの名無しさん
2008/12/24(水) 19:40:45このようなプログラムの記述でもよい?というかどういう意味なのでしょうか?
よろしくお願い致します。
1.
(kata)自作関数()
戻りの型を”()で閉じてる”上に関数との間に”スペース”がありません。
ちなみにkataには、変数でvoidが入ります。後半の()はvoid型なのに。
2.
rrom.abc[0].ddd[0]
ピリオドが二つあるのですが、これは一体何を意味しているのでしょうか?
構造体かと思いましたが、そのあとにまたピリオドがあって、構造体の構造体?
3.
struct destr s_ssss;
struct destr aaaa;
void aa_a;
void aa_b;
char dd_d;
といった文があったのですが、1行目でstructを宣言しておきながら;してる意味は?
そのあとにもまた;で終了して、次の行からは構造体の中身ともおわれしき代入があります。
{}で閉じる必要はないのでしょうか?
0830デフォルトの名無しさん
2008/12/24(水) 19:58:03中途半端な知識で中途半端に引用しているから、説明してもいいけど余計に混乱すると思う。
丸ごとアップローダにあげた方がいいと思う。
一応簡単に。
1.
・記号の前後のスペースなんか気にするな。殆どの場合に省略可能だ。
・「変数でvoidが入る」なんてことはない。何か勘違いをしている。
2.
・rromという構造体の実態の、メンバabcと言う構造体配列の0番目の要素のメンバdddという配列なのだろう。
3.
・1行目のそれは、そういう構造体があると言う只の宣言だ。
・3行目以降は構造体の中身ではない。引用が不充分なので、それが何かはわからない。
0831デフォルトの名無しさん
2008/12/24(水) 21:34:22ありがとうございます。
1.に関してということは
voidJISAKUkANSU() でもvoid JISAKUKANSU でもよいということでしょうか?
ちなみにkataは、別のヘッダファイルで void kata; なっていたのでvoidかとおもっていました。
2.
struct rrom{
abc[10]
}
strcut abc{
ddd[10]
} とかいった感じではなく
struct rrom{
abc[10]
}
abc[0] = nanka
とかいった感じなのでしょうか?この場合でも一番上が構造体だから.をつけると
理解すればよいのかな?
3.
3行目以降は本当に何行か構造体の中身みたいな感じで書かれていました。
なんでこんな書き方してるんだろうとおもってました。他の所でこの構造体
つかってた感じだったので、;をつけて下に何故かいているんだろうって
0832デフォルトの名無しさん
2008/12/24(水) 21:46:03>abc[10]
>}
>strcut abc{
>ddd[10]
>} とかいった感じではなく
>
>struct rrom{
>abc[10]
>}
>abc[0] = nanka
>
>とかいった感じなのでしょうか?
違う。
struct ddd_t {
/* 何か */
};
struct abt_t {
struct ddd_t ddd[10];
};
struct rrom_t {
struct abc_t abc[10];
};
rrom_t rrom;
rrom.abc[0].ddd[0]
みたいなかんじだと思われ。型と変数を混同しないように。
0833デフォルトの名無しさん
2008/12/24(水) 22:12:19struct Foo{
(sizeofが40になる単純なデータ群)
}
をboost::serializeで使うのにいちいちserialize書くのかったるいのですorz
0834デフォルトの名無しさん
2008/12/24(水) 22:22:34質問が不誠実過ぎたと思うので加筆します
struct Foo;
void function{
Foo f;
//この下2行の文章のmemcpyする必要がないので(&uchar[0])=&Fooにしたい->型キャスト って発想なのですが。
unsigned char n[40];
memcpy(&n[0],&f,sizeof(f));
};
何か思い当たる人はご教示お願いいたします。
0835デフォルトの名無しさん
2008/12/24(水) 22:25:040836デフォルトの名無しさん
2008/12/24(水) 22:26:310837デフォルトの名無しさん
2008/12/24(水) 23:35:35にほんごよめますか?
>830には、「きごうのぜんご」とかいてありますよ。
>ちなみにkataは、別のヘッダファイルで void kata; なっていたのでvoidかとおもっていました。
だから、1行ずつ切り出さないで全部貼れ。
>3行目以降は本当に何行か構造体の中身みたいな感じで書かれていました。
>なんでこんな書き方してるんだろうとおもってました。他の所でこの構造体
>つかってた感じだったので、;をつけて下に何故かいているんだろうって
自分で読み直して、説明が理解できますか?
いいから貼れ。
0838デフォルトの名無しさん
2008/12/24(水) 23:37:44unionならキャストの必要さえない。
が、キャストでやるならunsigned char * foo = reinterpret_cast<unsigned char *>(& f)でいい。
0839デフォルトの名無しさん
2008/12/24(水) 23:50:38cでgetcwd()して表示するのって何か違いがありますか?
0840デフォルトの名無しさん
2008/12/24(水) 23:54:16シンボリックリンクの解釈の辺りで。
0841デフォルトの名無しさん
2008/12/25(木) 00:07:39単純ポインタに変換してしまうとucharが1/40しか保存されないんです><
0842デフォルトの名無しさん
2008/12/25(木) 00:24:26そんなことは無いと思いながら実験してみたら、やはりそんなことはなかった。
typedef struct {
int i, j;
char s[32];
} Type;
int main(void)
{
Type t;
t.i = 0xabadcafe;
t.j = 0xdeadbeef;
strlcpy(t.s, "foobar", sizeof(t.s));
unsigned char *uc = (unsigned char *)(&t);
printf("0x%x\n", *(int *)uc);
printf("0x%x\n", *(int *)(uc+4));
printf("%s\n", uc+8);
return 0;
}
$ ./a.out
0xabadcafe
0xdeadbeef
foobar
なんか別のところで間違えてるんじゃないの?
0843デフォルトの名無しさん
2008/12/25(木) 00:32:23なるほど、ありがとうございます。
シンボリックの扱いを実験してみることにします。
0844デフォルトの名無しさん
2008/12/25(木) 00:32:38一応こちらでも実験したつもりで居るのですが、
boost::serializeの仕様が関わってるのかもしれませんし、速度重視で実験コード書いたので失敗したのかもしれません。
が、ちょっと今日は時間がないので明日以降に再質問したいと思います。
ご丁寧にありがとうございましたmm
0845796
2008/12/25(木) 00:36:01遅くなりましたがレスをどうもありがとうございます。
>DMA するかどうかはプログラミングの外の話じゃないかな。
素人ですみません。DMA するかどうかを調べる方法を
議論するとしたら、例えばどのあたりの板が適当でしょうか?
>それとメモリに読み込むより mmap した方が良いんじゃね?
ランダムアクセスは行わずに、シーケンシャルアクセスのみで、
また、一度読んだ領域は2度と読みません。
また、HDD からの読み込みが終了しているタイミングに、別スレッドから
占有的に,、同じHDDに対して高速書き込みを行いたいと考えてますので、
mmap のように必要になった時に初めてメモリ転送を行うのではなく、
決まったタイミングに全てのデータを一気にメモリに転送してしまいたいと
考えており、fread (or read?)文が適切かなと考えています。
0846デフォルトの名無しさん
2008/12/25(木) 00:54:19DMAはデバイスドライバが行う。Windowsではアプリケーションから制御できない。
0847デフォルトの名無しさん
2008/12/25(木) 01:14:50DMAではなくlibaioとかFILE_FLAG_OVERLAPPEDとかの
非同期IOのことではないだろうか。
0848デフォルトの名無しさん
2008/12/25(木) 01:17:070849796
2008/12/25(木) 01:24:03レスをどうもありがとうございます。
linux であれば、O_DIRECT フラグをつけて
open する事により、DMA 出来る(?)ようですが、
windows の場合は、DMA を行ってくれるかくれないかは、
プログラマレベルでは全く制御できず、運任せという事でしょうか。
ファイル転送ブロック容量等を色々と変えてさまざま条件で
転送速度を計測し、各々の条件でデバイスドライバが
DMAを行ったか否かを推測して、DMAを行ってくれる条件を
試行錯誤して探してみるしかないでしょうか?
0850796
2008/12/25(木) 01:31:01レスをありがとうございます。
cygwin ではなく VC++ で FILE_FLAG_OVERLAPPED
を使った経験はあり、実際に速度向上を体感できていましたが、
libaio というのは全く知りませんでした。これはcygwin で使えるのでしょうか。
ぜひ勉強してみようと思います。
0851デフォルトの名無しさん
2008/12/25(木) 01:38:11君が言ってるDMAって、誰に教えてもらったの?
0852796
2008/12/25(木) 01:46:301 TB×16 台(16TB) の RAID0 に 2Gbps の速度で
高速アクセスを行うようなハードウェア+アプリケーションを作成しており、
可能な限り高速なアクセスをしたいと考えております。
DMA 転送は、DSP やFPGA のアプリケーションで扱った経験は
ありますが、PC 上で確実にDMAを行いたいという経験は
初めてです。
0853デフォルトの名無しさん
2008/12/25(木) 01:59:000854デフォルトの名無しさん
2008/12/25(木) 02:11:21> O_DIRECT
それはやっぱりDMAとは呼ばない。
間にディスクキャッシュを噛ませないという意味でしかない。
ちなみにWindowsだとFILE_FLAG_NO_BUFFERINGが近い。
O_DIRECTがなくても、ディスクとOSキャッシュのメモリとの間の転送はDMAが使われる。
DMAなんてものは1アプリケーションが介入する領域の話ではない。
DMAがされるかどうか確認・設定したいなら、
WindowsではデバイスマネージャでATAコントローラのところを見ればいい。
もちろん可能ならDMA有効が初期設定、不可能なものなんて今時存在しないだろ。
0855796
2008/12/25(木) 02:30:37>>854
レスどうもありがとうございます。大変勉強になります。
理論値よりもだいぶ遅かったので、DMA できていない事が原因なのかなと
思いこんでいたのですが、別の原因で遅くなっているのかもしれませんね。
>O_DIRECTがなくても、ディスクとOSキャッシュのメモリとの間の転送はDMAが使われる。
OSキャッシュという概念がよくわかっておらず恐縮ですが、
O_DIRECTがなくても、DMAは必ず行われ、CPU の2次キャッシュや3次キャッシュは
汚染されないという理解でよろしいでしょうか?
とりあえず、
1.ディスクキャッシュを使用せず
2.非同期 I/O を用いる
という方法が考えうる最速の方法という事でしょうか?
可能であれば、cygwin でwindows/linux のマルチプラットフォームに対応したいと
考えていましたが、各々の OS で固有の API を使うしかないという事のようですね。
0856デフォルトの名無しさん
2008/12/25(木) 02:36:03printf("100以上なので修正します\n");
suuti = 100;
}
printf("数値は%dです\n",suuti);
100以上の数字を入力してもメッセージを表示してくれません
何か間違ってるのでしょうか・・?
0857デフォルトの名無しさん
2008/12/25(木) 02:39:23なんかキミ、用語だけは知ってるけど全然理解してないみたいだね。
本読んで勉強してきなよ。
0858796
2008/12/25(木) 02:45:05すみません。。元々ハードウェア設計が専門で正直、PCは
あまり詳しくありません。cygwin を使うのも初めてです。
具体的に855のどのあたりが致命的に間違っている点でしょうか?
0859デフォルトの名無しさん
2008/12/25(木) 02:49:15きっと間違ってるんでしょうね
どっかが
0860デフォルトの名無しさん
2008/12/25(木) 06:36:50CPUのキャッシュがどういう性質のものかも理解できていないじゃん。
>>856
100を超える比較しかしていないから、100を入力してもメッセージは出ないね。
0861デフォルトの名無しさん
2008/12/25(木) 06:52:34本来ならこのkataにはどういったものがはいるのでしょうか?
0862デフォルトの名無しさん
2008/12/25(木) 06:53:50断片を貼られてもなんとも言えません。いい加減大人しく全体を提示するか、さもなければお帰りください。
0863デフォルトの名無しさん
2008/12/25(木) 07:32:110864デフォルトの名無しさん
2008/12/25(木) 07:33:38全体は個人的なものじゃないので無理なのです・・・
考えられるパターンとしてはやっぱり戻り方では?
0865デフォルトの名無しさん
2008/12/25(木) 07:41:03にほんごよめますか?
>862には「かえれ」、>863には「きょうかしょをじっくりよめ」とかいてあります。
■ このスレッドは過去ログ倉庫に格納されています