C言語なら俺に聞け! Part 81

このエントリーをはてなブックマークに追加
176デフォルトの名無しさん:04/05/31 20:31
>>175
strtokにぬるぽ渡してもガッされないだろ? 何でだ??
2回目以降の第一引数はNULLだから?
>>165
おまえ、デバッガ使ったことないだろ。
デバッガの機能を理解した上で、デバッグしやすいコーディングを考えたら
バカの一つ覚えみたいに変数を隠蔽しようなんて考えは起こらないはずだ。
それでも隠蔽に拘るなら、ヘボとしかいいようがない。
どんな隠蔽してるんだ?
IUKnownで関数テーブルからいちいちハンドラ探させるるとか?
あ、変数の隠蔽か。
181デフォルトの名無しさん:04/05/31 22:13
デバッガの世話になるとは、ヘボとしかいいようがない。
それは違うと思うが、しかし変数の隠蔽でデバッグが
困難になるという状況は、思いつきにくいな。

Cで変数の隠蔽なんて大した事できないっしょ?
変数のIDテーブルとか使うのかなぁ?
構造体のネストが深いとか?
184175:04/05/31 22:20
>>176
第1引数がNULLだったら前回の続きから
(言わんとしてることは察して)
ってことになってるから ガッ されないんでしょう。

こんな感じで実装されてるのかな。

/*
* 初めて使われたときの第1引数がNULLのときの
* 振る舞いは未定義らしいので気にしない。
*
* 簡単のために第2引数は1文字ってことで。
*/
char *hoge(char *str, const char c)
{
  static char *p; /* >>173の「記憶クラス」ってのはこれのこと? */
  char *q;

  if (str != NULL) p = str;
  while (*p == c) ++p;
  for (q = p; *p != '\0'; ++p)
    if (*p == c) { *p++ = '\0'; break; }

  return *q == '\0'? NULL: q;
}

やっぱ何が問題なのかわからん。
185デフォルトの名無しさん:04/05/31 22:21
>>184
マルチスレッドな環境で
デバッグしにくい変数。

構造体のヘッダにデータサイズフィールドとか、データ型IDのがあって、
構造体の受け渡しは void* で行われて、コンテクストによっていろ
んな構造体にキャストしつつ使われている場合。

こんなんだったら嫌だな。局所的にはよくある手法だけど。
デバッグ厨の反撃まだー? マチクタビレター
188175:04/05/31 22:30
>>185
正直マルチスレッドって良くわかんないけど
>>184でいうところのpを二人以上がいじったら大変だってこと?

二人って・・・
中の人などいない!
アライメントって何ですか?
191デフォルトの名無しさん:04/05/31 23:05
広島の新井か
192デフォルトの名無しさん:04/05/31 23:13
>>190
えんばいろめんと でぃびじょん
193デフォルトの名無しさん:04/05/31 23:14
>>190
アラインメント
194190:04/05/31 23:14
分りました。
ありがとうございました。
195デフォルトの名無しさん:04/05/31 23:15
尻洗いぜーしょん
C言語でミリ秒を取得することはできますか?
出来るが環境依存
>>197
Win32APIですか?
>>196
C言語にそのような機能はありません。
ただし、多くのOSがそういうサービスを提供しているので、
その場合はCで取得可能でしょう。
(ミリ秒を取得するって変な日本語ですけど。)
Win32APIならGetTickCountかQueryPerformanceCounter/Frequency
前者はお手軽後者は高精度
>>197,>>199-200
めっちゃありがとう。
勉強になります。
すみません簡単な質問なんですが

ROM=コード部
Heap領域=アロケートにより取得するメモリ
stack部=Auto変数や引数
静的領域=staticな変数やグローバル変数
RAM=Heap領域+stack領域+静的領域

という理解で正しいでしょうか?
正しいとも言いがたい。そして、スレ違い。
>>202
違います。
違いすぎてフォローできません。
なぜ、ROMやRAMが出てくる?
>>202
ROM/RAMはハードの用語
プログラムやデータはすべてRAM=メモリ上に乗っている。
ただしコードの乗っているメモリにはCPUの機能として実行可能フラグがセットされたりする。
なのでRAMだけど書き換え不可。

後は表現が微妙だけど大筋であってる。
>>200
GetTickCountよりtimeGetTimeの方がよくない?
>>206
ライブラリがwinmmだから面倒。
計測にはQuery*のラッパークラス使うし。
208デフォルトの名無しさん:04/05/31 23:59
はいそこまで。
???
僕の職場では、普通にRAMが足らないとかROMがあと残り3kとかいう話が出るんですが
組み込みだからということですか?普通にWin上でやったら全てRAM上に取られるということですか?
fgetsでファイルから読み込んだ1行を、もう一度読みたいのですがなにかうまい解決策はないでしょうか。
いろいろ調べてみたのですが、fseekとかなのかな。。
>>209
すれ違い。
まぁ、組み込みだろうな。今時のPCじゃそんな会話は出ない。
212デフォルトの名無しさん:04/06/01 01:20
>>210
fseekする前にfgetposで場所を覚えておく。
で、fseekしたあとにfsetposで戻る。


ところで、二度目にfseekする前にその一行が変わるのか?
213212:04/06/01 01:20
おおっと、fseekはfgetsの間違いだ。
f(σ・∀・)σゲッツ!!
>>212
目的を果たす処理を聞くのではなく
自分の考えたついたアホ処理を聞いて目的は言わない。
このスレの流れなのでスルーして下さい。
216デフォルトの名無しさん:04/06/01 08:42
待ち人: 来るが遅い
>>209
そんな職場にいながら、どうしてRAMやROMを理解できないのか、
オレにはそちらの方が不思議だ。
コンピュータの一般的知識からやり直した方がいいぞ。
>>205
>プログラムやデータはすべてRAM=メモリ上に乗っている。

どさくさに紛れて適当なこと言うな。
ROMにだってプログラムやデータは載るだろ。
まぁ、書き込み可能なEPROMとかもあるしな。
微妙にスレ違いだし。
220デフォルトの名無しさん:04/06/01 12:26
実行時の話じゃないの?
>>220
じゃあ、ROMにあるプログラムやデータは、
実行時にはのっていないことになるのか?
うるせーな。そんな下等な環境の話を持ち出すなよ。
CといったらWindowsに決まってんだろぼけ。
>>222
何故、Cと言ったらWindowsなのかと(ry
>>219-221
マスクROMに載っているコードだって実行できる。
3人ともそれを知らない世代なんだろうな。
>>224
バスに命令コードを流せる「何か」であれば
譬え紙テープリーダだろうと直接実行できる。
>3人ともそれを知らない世代なんだろうな。
世代とは関係なく、ハードウェアに頓着してないだけかと。
そんなことよりスレ違いですよと。