掲示板

掲示板を置いてみました。ご自由に書き込んで下さい。
ただし、私は根性なしなので、閑古鳥が鳴いたり、荒れてきたと
思ったらとっとと閉鎖する可能性があります。


より新しい記事へ← 500 件の投稿中 500件目〜451件目を表示 → より前の記事へ
表示件数: 件/頁 


500 Re^2: 掲示板を移転します コメント数:  0件
  (ぱ) 管理人モード   | PXU00211@nifty.ne.jp 2003/04/30 (水) 19:38
 http://member.nifty.ne.jp/maebashi/
>  移転早々、新掲示板がOTDにより削除されました。
...
>  復活は出来るようなので、さっそくメールを送っておきました。

復活しました。現在は使用できます。ゴールドマウンテンさんの投稿も復活しています。

念のためURLを再掲:
http://bbs9.otd.co.jp/maebashi/bbs_plain

こんなに早く復活できたということは、OTDには、「復活依頼メール」が殺到してた、という状況ではなかった、ということでしょうね。まあ長期にわたって掲示板をほっといたわけですから、当然かも。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


499 Re: 掲示板を移転します コメント数:  1件
  (ぱ)   | PXU00211@nifty.ne.jp 2003/04/30 (水) 17:50
 http://member.nifty.ne.jp/maebashi/
> とおっしゃっていることですし、いよいよ掲示板を移転しようと思います。

 と書いていましたが。
 移転早々、新掲示板がOTDにより削除されました。
 あわてて調べたら、ちょうど今日、「OTD BBSシェイプアップ」なるものが実施されたようです。
http://bbs.otd.co.jp/_info/bbs_plain?base=306&;range=1

 削除する掲示板の抽出のタイミングと、削除実施のタイミングのちょうど間に、移行作業を行ってしまったようです。
 メールマガジンで告知があったようですが、OTDのメールマガジンは基本的に広告なので、読み飛ばしていました。
 復活は出来るようなので、さっそくメールを送っておきました。とはいえ、メールで受付ということは手作業が介入するということですから、多少時間がかかるかもしれません。
 新掲示板に「ゴールドマウンテン」さんの投稿があったことを確認しています。大変申し訳ありませんが、復活まで待てないようでしたら再投稿願います。
 ご迷惑をおかけして申し訳ありません。
# しかし、なんという間の悪さだ。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


498 Re: 煙 コメント数:  0件
  (ぱ)   | PXU00211@nifty.ne.jp 2003/04/30 (水) 01:45
 http://member.nifty.ne.jp/maebashi/
いまのところこっちの掲示板でReplyします。

> タバコの煙は
>   「ケーキを食べる店でくさやを持参して食べられる」
> くらいの衝撃なのでなんとかして欲しいです。本当に(泣)

 「くさや」というのを食べたことがないので実はその例えはよくわからないんですが(^^; 耐えられないほど臭いとは思います。
 問題は、喫煙者側にその認識がないことでしょうね。慣れちゃってるんでしょう。
 だから向こうには悪意がないし、こっちも怒るに怒れない。別に相手が嫌いなわけじゃないんですよ。煙草吸うぐらいのことで、相手の人格を全否定することはできません。
 2ちゃんなんかだと「喫煙者死ね!」なんてよく書いてあるわけですが、単純にそう叫べたらよっぽど楽なんでしょうがね。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


497 掲示板を移転します コメント数:  2件
  (ぱ) 管理人モード   | PXU00211@nifty.ne.jp 2003/04/29 (火) 21:57
 http://member.nifty.ne.jp/maebashi/
かずまさんも
>50行という制限より、この掲示板が全角500文字までという制限が
>きついですね。
とおっしゃっていることですし、いよいよ掲示板を移転しようと思います。
移転先は、だいぶ前に借りてちょっと設定して放ってあったOTD BBSです。
クリッカブルURLが使えないとか、いろいろ気になるところはありますが、

・文字数制限がここに比べてかなり緩い。
・<PRE>で囲んだのでソースのインデントがずれない。
・レス番号がずれていかない。

という利点があります。
URLは以下の通りです。

http://bbs9.otd.co.jp/maebashi/bbs_plain

決定的な不具合がなければ、明日にでも、トップページからのリンク先を
変更しようと思います。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


496 コメント数:  1件
  れぷ@職場 2003/04/27 (日) 20:35
こんばんは。

タバコの煙、私も嫌いです。
煙の臭いで食べものの味が抹消されるのはもちろん、
満腹に近づいたときに吸わされると吐き気がします。
# 吸う側は食後の一服が「かなりうまい」らしいです。

タバコの煙の何より嫌な点は、
「喫煙者は自分の吸いたい銘柄を吸っている」のに対して、
「受動喫煙者は吸わされる銘柄を選べない」ってところでしょうか。
ニコチンやタールのキツいものを吸う方がそばに居るとうんざりします。

タバコの煙は
  「ケーキを食べる店でくさやを持参して食べられる」
くらいの衝撃なのでなんとかして欲しいです。本当に(泣)
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


495 Re^11: どうすればいいの? コメント数:  0件
  本多   | manybook@msc.biglobe.ne.jp 2003/04/25 (金) 07:18
> ちゃんと読んでますか?
> 「 Re^4: どうすればいいの? 2003/04/22 (火) 11:43 」で、
> とバグを報告し、
> 「 Re^6: どうすればいいの? 2003/04/22 (火) 14:13 」で、
> void string(int s) の修正版を提示しています。
大変失礼しました。ちょっとはしょって読み飛ばしてました。
既知の解決済みの問題でしたね。失礼しました。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


494 Re^9: どうすればいいの? コメント数:  0件
  かずま   | tomohiko@da2.so-net.ne.jp 2003/04/25 (金) 05:52
#include <stdio.h>

FILE *fp;
int c, n, i, k, t, m;

void eol(void)
{
 if (i) n++, m += (!t && k), i = k = t = 0;
}

int blank(void)
{
 while ((c = getc(fp)) == ' ' || c == '\t' || c == '\r') i++;
 if (c != EOF) i++;
 return c;
}

void string(int s)
{
 while (t++, blank() != EOF && c != s)
  if (c=='\n' || c=='\\' && getc(fp)=='\n') n++;
}

void comment(void)
{
 while (k++, blank() != EOF) {
  while (c == '*')
   if ((c = getc(fp)) == '/') return;
  if (c == '\n') eol();
 }
}

int main(int argc, char *argv[])
{
 if (argc != 2 || (fp = fopen(argv[1], "r")) == NULL) return 1;
 while (blank() != EOF)
  if (c == '/')
   if ((c = getc(fp)) == '*') comment();
   else t++, ungetc(c, fp);
  else if (c == '"' || c == '\'') string(c);
  else if (c == '\n') eol();
  else t++;
 eol();
 printf("コメント行: %d\n非コメント行: %d\n", m, n - m);
 return 0;
}
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


493 Re^10: どうすればいいの? コメント数:  1件
  かずま   | tomohiko@da2.so-net.ne.jp 2003/04/25 (金) 05:48
> (3) 対象のc-programにbugがあって、"や'が閉じていない場合に、
> 終了できない
> (4) "や'で囲まれた文字列が、複数行になっていた場合に、
> 行数を数え損ねる。
>
> という不具合も報告しておきます。原因は同じところですね。

ちゃんと読んでますか?

「 Re^4: どうすればいいの? 2003/04/22 (火) 11:43 」で、
: このプログラムの問題点は、文字列の中で、改行や EOF があった
: 場合の処理をサボっていることです。
とバグを報告し、

「 Re^6: どうすればいいの? 2003/04/22 (火) 14:13 」で、
void string(int s) の修正版を提示しています。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


492 Re^9: どうすればいいの? コメント数:  2件
  本多   | manybook@msc.biglobe.ne.jp 2003/04/24 (木) 08:05
> ご指摘をいただくたびにソースを見直すことで、バグが見つかっ
> ています。ありがとうございます。今、分かっているバグは、
> (1) 空白だけの行で、改行が無くEOF になるものが数えられない。
> (2) / のあとに、" や ' や / が来る場合の処理が不完全。

(3) 対象のc-programにbugがあって、"や'が閉じていない場合に、
終了できない
(4) "や'で囲まれた文字列が、複数行になっていた場合に、
行数を数え損ねる。

という不具合も報告しておきます。原因は同じところですね。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


491 Re^9: どうすればいいの? コメント数:  0件
  本多   | manybook@msc.biglobe.ne.jp 2003/04/23 (水) 18:22
> (1) はすぐ修正できますが、(2) はちょっと考えています。
> (2) は、例えば次のプログラムの行数を正しく数えられないと
> いうことです。
つまり、/のあとに"が来たときに、string(c)に達すればいいんですよね?

ここって、main()中を
---
 while ((c = blank()) != EOF)
  if (c == '/')
   if ((c = getc(fp)) == '*') { comment(); continue;} /* add continue */
   else t++;
  if (c == '"' || c == '\'') string(c); /* remove else */
---
っていうくらいの対応じゃ、ダメかしら?
また、思慮が足りない...かな。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


490 Re^8: どうすればいいの? コメント数:  5件
  かずま   | tomohiko@da2.so-net.ne.jp 2003/04/23 (水) 10:51
> 何か入力ミスでもしてたか、勘違いしたようです。
> 失礼いたしました。

ご指摘をいただくたびにソースを見直すことで、バグが見つかっ
ています。ありがとうございます。今、分かっているバグは、
(1) 空白だけの行で、改行が無くEOF になるものが数えられない。
(2) / のあとに、" や ' や / が来る場合の処理が不完全。

(1) はすぐ修正できますが、(2) はちょっと考えています。
(2) は、例えば次のプログラムの行数を正しく数えられないと
いうことです。

printf("%d\n", 'a'/'a');
/* comment */
return 0;

50行という制限より、この掲示板が全角500文字までという制限が
きついですね。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


489 Re^7: どうすればいいの? コメント数:  6件
  本多   | manybook@msc.biglobe.ne.jp 2003/04/22 (火) 16:56
> > /* comment */<EOF>
> > のときにちょっと困りそうだなとは思いましたが、
> 困りません。思うだけでなく、試してみてください。

さっき試してダメだった...はずだったのですが、
もう一度やったら、ちゃんとできるようです。

何か入力ミスでもしてたか、勘違いしたようです。
失礼いたしました。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


488 Re^6: どうすればいいの? コメント数:  7件
  かずま   | tomohiko@da2.so-net.ne.jp 2003/04/22 (火) 14:13
> /* comment */<EOF>
> のときにちょっと困りそうだなとは思いましたが、

困りません。思うだけでなく、試してみてください。

文字列の処理を修正しました。コメントの処理も短くしました。

void string(int s)
{
 t++;
 while (blank() != s && c != EOF)
  if (c=='\n' || c=='\\' && getc(fp)=='\n') n++;
}

void comment(void)
{
 while (k++, blank() != EOF) {
  while (c == '*')
   if ((c = getc(fp)) == '/') return;
  if (c == '\n') eol();
 }
}
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


487 Re^5: どうすればいいの? コメント数:  8件
  本多   | manybook@msc.biglobe.ne.jp 2003/04/22 (火) 13:09
> > これだと、
> > 1行でcommentが終了するとcomment lineとして数えてもらえないですね。
> 私のプログラムを実行すると、
> comment only line: 1
> the other line:5
> と表示されるんですが。
おっと、失礼しました。
ちょっと環境の問題でtest用のcodeの改行に
^M(復帰っていうんでしたっけ?)が入っていました
(test環境は1 byteの環境で)。
ちゃんと^Mを削除したら、おっしゃるとおりの結果を得ました。

> このプログラムの問題点は、文字列の中で、改行や EOF があった場合の
> 処理をサボっていることです。あと 2〜3行の追加で済むはずですが。
そうですね。
/* comment */<EOF>
のときにちょっと困りそうだなとは思いましたが、
たぶんeol()関数がEOFも数えればいいだけ...かな?
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


486 Re^4: どうすればいいの? コメント数:  9件
  かずま   | tomohiko@da2.so-net.ne.jp 2003/04/22 (火) 11:43
> これだと、
> 1行でcommentが終了するとcomment lineとして数えてもらえないですね。
> 例)
> #include <stdio.h>
> /* comment */
> int main(void)
> {
> return 0;
> }

私のプログラムを実行すると、
comment only line: 1
the other line:5
と表示されるんですが。

このプログラムの問題点は、文字列の中で、改行や EOF があった場合の
処理をサボっていることです。あと 2〜3行の追加で済むはずですが。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


485 Re^3: どうすればいいの? コメント数:  10件
  本多   | manybook@msc.biglobe.ne.jp 2003/04/22 (火) 07:42
> 50行で書いてみました。
これだと、
1行でcommentが終了するとcomment lineとして数えてもらえないですね。
例)
#include <stdio.h>
/* comment */
int main(void)
{
return 0;
}
問題点はcomment()という関数が行数の計数と
*/の検索をしているため、*/を見つけた段階で終了してしまい、
*/の後の改行を数えませんね。comment()関数中で*/を見つけた後
行末まで確認するcodeをつければいいのかなぁ?
でも、
/* comment1 */ /* comment2 */
も数えるのは、結構面倒かなぁ?

私なら
1.file全体を1つのbufferに読み込む
2.各行の状態を保管する配列を作る。
3.2の配列からcommentのみ行を探して数える
っていうstepを踏むかなぁ。少しも短くならないけど...(^^;)

commentだけなら構文解析して compilerもどきを作るって言うのは
必要ないか...?
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


484 Re^2: どうすればいいの? コメント数:  11件
  かずま   | tomohiko@da2.so-net.ne.jp 2003/04/21 (月) 21:11
50行で書いてみました。

#include <stdio.h>

FILE *fp; int c, n, i, k, t, m;

void eol(void)
{
 if (i) n++, m += (!t && k), i = k = t = 0;
}

int blank(void)
{
 while ((c = getc(fp)) == ' ' || c == '\t');
 if (c != EOF) i++;
 return c;
}

void string(int s)
{
 t++;
 do {
  if ((c = getc(fp)) == '\\') getc(fp);
 } while (c != s);
}

void comment(void)
{
 k = 1;
 while ((c = blank()) != EOF) {
  while (c == '*')
   if ((c = getc(fp)) == '/') return;
  if (c == '\n') eol();
  k = 1;
 }
}

int main(int argc, char *argv[])
{
 if (argc != 2 || !(fp = fopen(argv[1], "r"))) return 1;
 while ((c = blank()) != EOF)
  if (c == '/')
   if ((c = getc(fp)) == '*') comment();
   else t++;
  else if (c == '"' || c == '\'') string(c);
  else if (c == '\n') eol();
  else t++;
 eol();
 printf("comment only line: %d\nthe other line:%d\n", m, n - m);
 return 0;
}
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


483 Re: どうすればいいの? コメント数:  12件
  (ぱ)   | PXU00211@nifty.ne.jp 2003/04/18 (金) 21:12
 http://member.nifty.ne.jp/maebashi/
ええと、これだけでは状況が全然わかりませんが、この問題、仕様をつきつめると結構面倒じゃないでしょうか?

  /* なんとか */

こんな行はコメント行だとして、

int i; /* 変数の宣言 */

これはコメント行とはカウントしないのでしょうし、

int i; /* この変数は、ループカウンタやら何やらで
      あっちこっちで使ってるよ */

これは、非コメント行1行に、コメント行1行ですかね。

うまく書けば(本体部分は)100行には収まりそうですが、50行では厳しいのでは。問題をよく一般化しないでかかると、100行を軽く超えても不思議でないように思います。

>わたしもやってみたのですが、コンパイルがうまくいくのに、実行しようとするとぜんぜんうまくいきません。

世の中そんなもんですよ :-)
デバッグにかかる時間の中で、コンパイルエラーを潰す時間なんてわずかなものです。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


482 どうすればいいの? コメント数:  13件
  ゴールドマウンテン   | johokaneko@hotmail.com 2003/04/18 (金) 18:59
最近とても悩んでます。私が見つけたCの本に「引数によって与えられたソースコードを解析して、コメント行の数とそれ以外の行数を表示する」というものがあり、わたしもやってみたのですが、コンパイルがうまくいくのに、実行しようとするとぜんぜんうまくいきません。それでほかのC言語仲間もやっているのですが、コードの行数が軽く100行を超えてるんです。私は50行もあれば十分だと思っているので、なぜそんなに行数が多くなるのかが分かりません。
何としても自力でクリアしたいのですが、どうにもうまくいかない現状なので、ぜひアドバイスやポイントがあればお願いします。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


481 Re: 電卓のページについて コメント数:  0件
  (ぱ)   | PXU00211@nifty.ne.jp 2003/04/17 (木) 19:54
 http://member.nifty.ne.jp/maebashi/
> はじめまして。

はじめまして。

> 「分かっているバグは直して下さい」
すみません、すぐ直るバグを、ずいぶん長期にわたって放置してしまいましたね。
今週末を目処に直します。

> 「VC6.0のプロジェクトにして下さい」
このつもりはありません。私は個人ではVC6.0は持っていませんし。
# 会社では使ってますが。

> 「テストEXEも付けて下さい」
(cygwin.dllは要るけど)すぐに使える電卓の実行形式は上げてあるはずですが…
と思ったら、あれ? リンクが切れてるような。
うちに帰ったらチェックしてみます。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


480 電卓のページについて コメント数:  1件
  おかだ 2003/04/14 (月) 23:23
はじめまして。

yaccを検索しててやってきました。
電卓のところですけど、
「分かっているバグは直して下さい」
「VC6.0のプロジェクトにして下さい」
「テストEXEも付けて下さい」
と、要望出しときます。(^o^A

また来ますのでよろしく!
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


479 Re^2: 整数のビットパターンの実装について コメント数:  0件
  北 2003/03/09 (日) 12:31
akiさん、ありがとうございます。
なるほど、よく理解できました。
私は規格書を持っていないのですが、
でも、ちゃんと規格を読めば分かることだったんですね。
失礼しました。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


478 Re: 整数のビットパターンの実装について コメント数:  1件
  aki 2003/03/09 (日) 10:06
(1)の仮定は正しいです。JIS規格のX3010 6.1.2.5で「汎整数型」は次の
ように定義されています。

 | 型char, 符号付き整数型, 符号無し整数型及び列挙型を総称して汎
 | 整数型(integral type)と呼ぶ。汎整数型の表現は純2進記数法を用
 | いて値を定義しなければならない。

「純2進記数法」については脚注で次のように説明されています。

 | 0と1の2進数字を用いる固定基数記数法。この記数法の値は、連続し
 | たビットで表現された値である。各ビットの値は、1で始まり、2の
 | 連続する整数べき乗で乗算される。ただし、最上位ビットは、別扱い
 | でありうる。

したがって、正の値を左に2ビットシフトした結果の値はあふれなければ
元の値を4倍したものと必ず等しくなります。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


477 整数のビットパターンの実装について コメント数:  2件
  北 2003/03/09 (日) 02:34
こんにちは。
Cのビット演算子に関することで質問があります。
ご存知の方がいらっしゃいましたら、
ぜひ教えていただけないでしょうか。

例えばK&R2 p.60には
「x << 2 は……(中略)……4を掛けるのと同じである」
という記述があります。
これが正しいとすると、以下のいずれかが成り立つはずだと
思うのですが、どちらも合点が行きません。

(1)「汎整数型の正の値は、その2進表現に一致するビットパターンで記録される」
という実装を前提としている。

(2)そもそもビット演算子は実装に関係なく、
整数の2進表現という仮想的なビットパターンに作用する。

負の整数の実装のバラエティーとしては
「1の補数」と「2の補数」のような例が思い付きますが、
同様に正の整数に対してもさまざまな実装があり得ますよね
(少なくとも理論的には)。
そうすると(1)はまずいんじゃないか、と思うのですが、
かといって(2)のような記述は探しても見付かりませんでした。
正しくはどう理解すれば良いのでしょうか。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


476 Re^4: 『エキスパートCプログラミング』についての質問 コメント数:  0件
  古い方のkit 2003/02/28 (金) 20:30
ううう、すいません && どうも ありがとうございます。_o_
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


475 Re^3: 『エキスパートCプログラミング』についての質問 コメント数:  1件
  北(にせkit) 2003/02/28 (金) 19:26
元祖kitさん、失礼しましたm(_ _)m
どう考えたって
私のほうが名前を変えるのが筋ですね。
ここでは「北」と書くことにします。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


474 Re^2: 『エキスパートCプログラミング』についての質問 コメント数:  2件
  kit 2003/02/28 (金) 18:54
別のkitです。:)
私もこの掲示版に時々kitという名前で書き込んでましたけど、
こちらの方とは別人です。
「はじめまして」とありますから、偶然名前がかちあったんですね。
これからは、ex.kitとか名乗ろうかなぁ。
コールサイン切れてるし…
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


473 Re^2: 『エキスパートCプログラミング』についての質問 コメント数:  0件
  田中 2003/02/27 (木) 00:27
kitさん、ご回答ありがとうございました。

> 田中さんのおっしゃる通りだと思います。
安心しました。

> 下の註を見るとR2は「iの左辺値」として使うことにしてるわけだし。
ここをみて、問題の箇所のR2はこう初期化されているのか、
とはじめは考えました。
この注、上のコード見れば分かることだし、無くても構わないような…。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


472 Re: 『エキスパートCプログラミング』についての質問 コメント数:  4件
  kit 2003/02/26 (水) 23:50
初めまして。
田中さんのおっしゃる通りだと思います。
R5: 配列要素のサイズ
R1: 現在のpの右辺値
ですから、新しい[R0](すなわちpの右辺値)は
R5 + R1で与えられるはずですね。
そもそも、値が不定のR2がいきなり出てくるのがおかしいですね。

さらに注文をつけさせてもらうと、
ここではR2を介して[R0]を更新していますが、
このR2はR6ぐらいにしておいて欲しいところですね。
下の註を見るとR2は「iの左辺値」として使うことにしてるわけだし。

ちなみに私はかなりこの本を読み込んでいるつもりだったんですが、
ここのミス(たぶん)には気づきませんでした。
註の中の「関節参照」に気を取られてたのかもしれません(^^;)
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


471 Re^5: 環境別オブジェクトファイルの作り方(Makefile) コメント数:  0件
  本多元   | manybook@msc.biglobe.ne.jp 2003/02/25 (火) 11:09
さっそくの回答 ありがとうございます。

> なにをもって「適切」と判断するかは当人次第。
ごもっとも(^^;)。まぁ皆様はどうしてますか?くらいに思ってください

> 案1:同一ディレクトリに別ファイルを作る
> hogefoo.o: hoge.c
これは、あまりやりたくないですね。
環境2つ、ファイル2つくらいならいいけど、
環境4つ、ファイル20個とかだと、カレントにあるファイルが
多くなりすぎます。
> 欠点:デフォルトルールがつかえない
これも嫌ですし。

> 案2: VPATH を使う
> VPATH=..
VPATHって、ソースファイルの検索範囲を指定する変数?
少し試してみたけど、これはいいですね。

コンパイル時に、ソースファイルとは違うディレクトリを移動すればいい
って言うのは気づかなかったなぁ。

# 他の方法を取っている方はいらっしゃいますか?

# Makefileのタブとかspaceを消さないで欲しいなぁ>掲示板様
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


470 Re^4: 環境別オブジェクトファイルの作り方(Makefile) コメント数:  1件
  774 2003/02/25 (火) 08:40
> では、いったい、どのようにするのが適切なのでしょうか?
なにをもって「適切」と判断するかは当人次第。

案1:同一ディレクトリに別ファイルを作る
hogefoo.o: hoge.c
$(CC) -DFOO 以下略
hogebar.o: hoge.c
$(CC) -DBAR 以下略
利点:どんな make でも通る
欠点:デフォルトルールがつかえない

案2: VPATH を使う
VPATH=..
foo:
if [ ! -d foo ]; then mkdir foo; fi
(cd foo; $(MAKE) -f ../Makefile 以下略)
bar:
if [ ! -d bar ]; then mkdir bar; fi
(cd bar; $(MAKE) -f ../Makefile 以下略)
VPATH が「まともに」使える make が必要 (要 GNUmake)
bourne-shell (clone) が必要 (DOS/WIN では動かない)
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


469 Re^3: 環境別オブジェクトファイルの作り方(Makefile) コメント数:  2件
  本多元   | manybook@msc.biglobe.ne.jp 2003/02/24 (月) 14:33
では、いったい、どのようにするのが適切なのでしょうか?
どうか、この愚か者に お教えいただけないでしょうか?
よろしくお願いします。

あぁ、3通を超えてしまった。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


468 Re^2: 環境別オブジェクトファイルの作り方(Makefile) コメント数:  3件
  本多元   | manybook@msc.biglobe.ne.jp 2003/02/24 (月) 14:15
CC= gcc
MAKELIB= $(CC) -G -o $@ $(OBJS)
LIB= libHoge.so
SRCS= hoge1.c hoge2.c
OBJS= $(OBJDIR)/$(SRCS:.c=.o)
DFILES= $(SRCS:.c=.d)
$(LIB): $(OBJS)
$(MAKELIB)
$(OBJS):
$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
%.d:%.c
$(CC) $(CFLAGS) $(CPPFLAGS) -M $< > $@
all: $(LIB)

foo:
$(MAKE) "CPPFLAGS= -DHOGE=foo" "OBJDIR=FOO"
bar:
$(MAKE) "CPPFLAGS= -DHOGE=foo" "OBJDIR=BAR"
clean:
$(RM) *.a *.o *~ */*.o
depend: $(DFILES)
include $(DFILES)
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


467 Re: 環境別オブジェクトファイルの作り方(Makefile) コメント数:  4件
  本多元   | manybook@msc.biglobe.ne.jp 2003/02/24 (月) 14:15
だからと言って、毎回、
% make clean
rm -f *.o *.a *.so
% make foo
...
なーんてこと、やるなら、最初からmakeはいらないんですね...

だけど、じゃあ、どうしたらいいのかわからないのです。
きっとFOOとかBARというディレクトリを作って
% make foo
cc -DHOGE=foo -c hoge1.c -o FOO/hoge1.o
cc -DHOGE=foo -c hoge2.c -o FOO/hoge2.o
cc -G FOO/hoge1.o FOO/hoge2.o -o FOO/libHoge.so
% make bar
cc -DHOGE=bar -c hoge1.c -o BAR/hoge1.o
cc -DHOGE=bar -c hoge2.c -o BAR/hoge2.o
cc -G BAR/hoge1.o BAR/hoge2.o -o BAR/libHoge.so
ということが可能にするんだと思っているのですが、違いますか?

このような場合に、Makefileってどのように記述するんでしょう?
次の様にすると、どうもhoge2.oがカレントに来ちゃうようですが。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


466 環境別オブジェクトファイルの作り方(Makefile) コメント数:  5件
  本多元   | manybook@msc.biglobe.ne.jp 2003/02/24 (月) 14:14
長いので3回に分けます(読みづらくてスイマセン)
ここへの投稿が適切じゃないかもしれませんが...(^^;)

コンパイル時に実行環境別のオブジェクトを同じソースから作ることって
よくあると思うのですが、Makefileはどうやって記述するのでしょうか?

fooとbarという環境があったとして、それぞれのオブジェクトを作るときは
make fooとかmake barと言う様にして以下の様に作成しますよね?
% make foo
cc -DHOGE=foo -c hoge1.c -o hoge1.o
cc -DHOGE=foo -c hoge2.c -o hoge2.o
cc -G hoge1.o hoge2.o -o libHoge.so
% make bar
cc -DHOGE=bar -c hoge1.c -o hoge1.o
cc -DHOGE=bar -c hoge2.c -o hoge2.o
cc -G hoge1.o hoge2.o -o libHoge.so

ところで、この場合 カレントにオブジェクトを作るようにしていると、
カレントのオブジェクトがどんなオプションでコンパイルされたのか
わからなくなってしまいますよね?
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


465 『エキスパートCプログラミング』についての質問 コメント数:  5件
  田中 2003/02/24 (月) 14:14
CやJava、前橋さんのご本とは関係のない話題ですいません。

この掲示板でもときどき話題になる『エキスパートCプログラミング』の
p.241(邦訳)の「ポインタの書き換え3」中間コードについての質問です。
最後の2行は「p++」についてのコードだと思いますが、
その「add R5+R2 into R2」の始めのR2は、R1の間違いでしょうか。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


464 Re^2: Javaのmainメソッドについての質問 コメント数:  0件
  ころ 2003/02/23 (日) 20:02
> > mainメソッドのアクセス修飾子を変えてみたところ、
> > publicにしてもprivateにしても結果は同じになりました。
>
> これはJDK1.3の頃まであったバグです。

ははは(^_^;そういうことでしたか。
ありがとうございました。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


463 Re: Javaのmainメソッドについての質問 コメント数:  1件
  (ぱ)   | PXU00211@nifty.ne.jp 2003/02/22 (土) 22:31
 http://member.nifty.ne.jp/maebashi/
> mainメソッドのアクセス修飾子を変えてみたところ、
> publicにしてもprivateにしても結果は同じになりました。

これはJDK1.3の頃まであったバグです。

http://java-house.jp/ml/archive/j-h-b/051089.html#body

私のところでも、1.3で試したら動きましたが、1.4では
「Main method not public.」というエラーメッセージが出ました。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


462 Javaのmainメソッドについての質問 コメント数:  2件
  ころ 2003/02/22 (土) 21:50
こんにちは。
"Hello World" を表示するサンプルコードを元にあれこれやっていたのですが、
mainメソッドのアクセス修飾子を変えてみたところ、
publicにしてもprivateにしても結果は同じになりました。
なぜ同じ結果になるのでしょうか?
mainメソッドのアクセス修飾子は意味がないのですか?
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


461 動的メモリ確保の項の追加について コメント数:  0件
  ミニえもん 2003/02/18 (火) 07:39
「C言語 体当たり学習徹底入門」のページの補足へ、
動的メモリ確保のついて、ホントに書いてくださったみたいで…。
掲示板の方へ、ただのお礼を投稿するのも変かもしれませんが、
本当にありがとうございます。

ものわかりの悪い質問のために、お手数かけまして
すみません。


書いてくださったからには、私以外の人でも、誰か役に立てて
くれる人がいるといいですね。

どうもありがとうございました。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


460 Re^9: javaアプレット コメント数:  0件
  (ぱ)   | PXU00211@nifty.ne.jp 2003/02/05 (水) 01:22
 http://member.nifty.ne.jp/maebashi/
 反応が大変遅くなりましたが。

> それと、もう一点、後手で開始して二手目でどこに置こうとしてもパスになって負けてしまうというのがあったのですが、こちらは再現しません・・・。何だったのでしょうか・・・

 こちらでも、Opera(ただしJREは1.4)で試してもらったり、JDK1.3のappletviewerで試したりしているのですが、どうにも再現しませんです。
 症状が出た方がいらっしゃいましたら教えてください (_o_)
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


459 Re^8: javaアプレット コメント数:  1件
  xiu 2003/01/31 (金) 02:39
> # そういえば、最初の質問者であったxiuさんはいずこへ?(汗)
あ、ちゃんと読んでましたのでご心配なく(笑)。

JRE1.4で試してみようと思ったのですが、Win2kのSP2がないとだめみたいなのでやめました。
結局、原因はいまいちはっきりしませんでしたけど、リバーシでは問題ないとしても問題になるケースも色々ありそうなのでちょっと心配です。といっても、私はほとんどjavaは触らないんですが。

それと、もう一点、後手で開始して二手目でどこに置こうとしてもパスになって負けてしまうというのがあったのですが、こちらは再現しません・・・。何だったのでしょうか・・・
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


458 Re^7: javaアプレット コメント数:  2件
  レプラコーン 2003/01/30 (木) 21:29
> アニメーションを行った後で画面の再描画を行います。
なるほどぉ。では私の憶測は全然的外れでしたね。
私もゲーム自体には支障はないと思っています。
# というか、最終回ってクラスの構築の話だったような・・・

ただ一点気になるのが、描画処理をスレッド化されている(?)という点で、
例えば6コマひっくり返って、次のターンが「パス」、
その次が「1コマひっくり返る」ような状況だと
先に1コマの処理が終わって全体の再描画ということもあるかも・・・(^^;
# 既にキューに積んで処理されているならすいません。

丁寧な回答ありがとうございました。
# そういえば、最初の質問者であったxiuさんはいずこへ?(汗)
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


457 Re^6: javaアプレット コメント数:  3件
  (ぱ)   | PXU00211@nifty.ne.jp 2003/01/30 (木) 01:32
 http://member.nifty.ne.jp/maebashi/
返答が遅れてすみません。

> 憶測ですが、この描画がすっ飛んだときに、
> たまたま盤面の再描画を行われてしまうので変に見えるのかと。

 たとえば白から黒にひっくり返るとき、アニメーションを行った後で画面の再描画を行います。再描画するときには、石は黒になっています。
 プログラム内の配列中のデータは、アニメーション前から黒にされていますが、アニメーションと再描画は同一のスレッドで逐次的に行われますので、アニメーションの前とか途中に黒が表示されることはないはずです。
 ただ、環境によりアニメーションがすっ飛ぶということであれば、その後の画面の再描画により、変な感じにちらつくことはあるかもしれません。うちのCeleron 333MHzでも、そんなに気になるものではないと(私は)思っていますが...
 ひっくり返した後の再描画自体、実は不要なんですけどね。変なゴミが残ったりすると嫌だなあ、ということで一応全体を再描画しています。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


456 Re^5: javaアプレット コメント数:  4件
  れぷ@職場 2003/01/28 (火) 12:19
> (1)初期状態が白のコマが黒にひっくり返るべきとき、最終的には
>  黒になるんだけど途中の挙動がおかしい。
説明不足でした。こちらの挙動です。
私の環境では、描画が間に合わないのか、
途中のアニメーションもすっ飛んでしまうことがあります。

憶測ですが、この描画がすっ飛んだときに、
たまたま盤面の再描画を行われてしまうので変に見えるのかと。
ただ、(ひと駒ごとの)アニメーションが完了するまでは
盤上にある駒の色を変更していないならば、
原因はちょっと思いつきません・・・
# やっぱりIEが悪さしているんでしょうか。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


455 Re^4: javaアプレット コメント数:  5件
  (ぱ)   | PXU00211@nifty.ne.jp 2003/01/27 (月) 20:50
 http://member.nifty.ne.jp/maebashi/
> ひっくり返るアニメーションが終わる前に、
> 「駒の色がひっくり返った」という判定が済んでいるように思えます。
> 従って、黒から黒にひっくり返るように見えています。

 ええと、何度目を凝らして見てみても、白から黒にひっくり返っているように見えます。
 黒から黒にひっくり返る、というのは、
(1)初期状態が白のコマが黒にひっくり返るべきとき、最終的には
 黒になるんだけど途中の挙動がおかしい。
(2)初期状態が黒のコマが白にひっくり返るべきとき、なぜか
 黒になってしまう。

のどちらでしょうか?
 (2)だとゲームにならないと思われるので(1)と仮定すると、アニメーション自体は白から黒の反転が行われていると思ってよいですか?

> 何度か対戦してますが、さっぱり勝てません(^^;
 私もさっぱり勝てない... はずだったのですが、さっきアニメーションのテストのためにひょいとやってみたら、あっさり勝ってしまいました。まだまだ改善の余地があるようです(^^;
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


454 Re^4: javaアプレット コメント数:  0件
  本多   | manybook@msc.biglobe.ne.jp 2003/01/27 (月) 13:12

> 何度か対戦してますが、さっぱり勝てません(^^;
私も全然勝てません。

でも、私の場合、勝てないのは
動作がおかしいせいじゃないですけど...(^^;)
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


453 Re^3: javaアプレット コメント数:  7件
  レプラコーン 2003/01/26 (日) 22:08
> めくれるときのアニメーションがおかしかったり。
これは確認しました。環境はWin2k+IE5.5です。

ひっくり返るアニメーションが終わる前に、
「駒の色がひっくり返った」という判定が済んでいるように思えます。
従って、黒から黒にひっくり返るように見えています。

何度か対戦してますが、さっぱり勝てません(^^;
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


452 C言語ポインタ完全制覇 コメント数:  0件
  ゆたか   | yutakakn@tky3.3web.ne.jp 2003/01/26 (日) 21:41
 http://cgi3.tky.3web.ne.jp/~yutakakn/
はじめまして,前橋さん。

先日amazonにて書籍「C言語ポインタ完全制覇」を注文しまして,
本日到着しました。刷数を拝見しましたが,売れ行き好調のようですね。
本のほうはじっくりと読み進めていきたいと思っています。

これからも素晴らしい本をお願いします。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


451 Re^4: javaアプレット コメント数:  0件
  xiu 2003/01/25 (土) 21:46
現在、JREのバージョンは1.3です。
これから最新版のランタイムをインストールして試してみようと思います。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


より新しい記事へ ← 500 件の投稿中 500件目〜451件目を表示 → より前の記事へ
表示件数: 件/頁 
パスワード:

Copyright(C) 1999 NIFTY Corporation
All Rights Reserved.