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


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

【初心者歓迎】C/C++室 Ver.38【環境依存OK】



1 名前:デフォルトの名無しさん [2007/06/03(日) 22:33:55 ]
エスケープシーケンスやWin32APIなどの環境依存な物でもOK。
ただしその場合、質問者は必ず、環境を書きましょう。
※sage禁止です。
【前スレ】
【初心者歓迎】C/C++室 Ver.37【環境依存OK】
pc11.2ch.net/test/read.cgi/tech/1178432985/l50
【アップローダー】(質問が長い時はココ使うと便利)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm


237 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 15:19:58 ]
なんかさ、やろうとしてることがショートカット作る程度でできそうな事な感じなんだが
複数コマンドだとしてもバッチファイルで済むレベルの内容じゃないのか?
無理矢理Cで作ろうとするほうが疑問なんだが・・・


238 名前:178 mailto:sage [2007/06/08(金) 15:30:47 ]
>>236
ヤバイ・・・全然皮肉が伝わってなかったらしいです;;
言われても気付けない俺はバカかもしれない・・・
まぁ、逆に考えれば幸せな人なのかもしれないから良いか(`・ω・´)ふふふ

>>237
やろうとしていることは、D&Dで.javaを渡したらコンパイル、.classを渡したらそれを実行するプログラムです。
もしかしたらもっと簡単で楽な方法があるんですかね・・・。バッチファイルとか分からないので後でググッておきます。
JAVAを昨日から勉強しようと思ったのですが、いちいちコマンドプロンプトでディレクトリ移動したり
javaコマンド打ったりするのが面倒だと思って・・・。↑押せば前のコマンドは出てきますけど、それさえも面倒で・・・。
というか、コマンドプロンプトでコマンド打つのが嫌いなんです;;
そして、今大体プログラムは完成したっぽいです。

239 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 15:32:32 ]
strncpy()は鬼門。積極的に使う理由がないなら、sprintf()を使え。

240 名前:デフォルトの名無しさん [2007/06/08(金) 17:32:11 ]
したのようなプログラムで、今調べている位置を出力するにはどうしたら良いですか?
printf("%d\n", Fd)としたら値が変化しません・・・


struct ffblk Fd;
findfirst("*", &Fd, 55);
do {
printf("%s\n", Fd.ff_name);
}
while(!findnext(&Fd));

241 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 17:45:49 ]
>>240
何も分からない

242 名前:デフォルトの名無しさん [2007/06/08(金) 17:48:57 ]
>>241
再帰を使わずにディレクトリ内のファイルを出力したいのですが
ディレクトリを進めたときに上ディレクトリで何処まで読んだかを記録しておきたいんです

243 名前:デフォルトの名無しさん [2007/06/08(金) 17:50:47 ]
A_dir
B_dir
C_dir
というディレクトリがあったとき、B_dirを調べ終わったとき
次にC_dirを検索するにはどのデータを保存しておけば良いんですか??


244 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 17:59:58 ]
>>243
関数を再帰的に書けば良いじゃん

245 名前:デフォルトの名無しさん [2007/06/08(金) 18:05:38 ]
>>244
再帰を使いたくないんです・・・



246 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 18:07:08 ]
何故?

247 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 18:09:33 ]
Fdを保存しておけばいい

248 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 18:10:05 ]
末尾再帰型で書いてからループ化すれば?
ttp://ja.wikipedia.org/wiki/%E6%9C%AB%E5%B0%BE%E5%86%8D%E5%B8%B0

249 名前:デフォルトの名無しさん [2007/06/08(金) 18:13:57 ]
>>246 再帰は不安定になるんですよ

>>247 struct ffblk Fd , Fe; としてFe = Fdと記録してみましたがた゛めでした

250 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 18:19:05 ]
struct ffblk[MAX_DIR_DEPTH];

251 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 18:19:21 ]
再帰が不安定とは……

252 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 18:21:44 ]
普通にスタックに積めばいいじゃん。

253 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 18:23:20 ]
>>249
再帰で不安定になるのは、あなたの書いたプログラムの問題。
まあ再帰使わなくても>>250みたいなやり方でFA_DIRECでも調べれば可能かとは思うけど
100人中95人以上は、再帰の方がわかりやすく書きやすいと言うだろう。
速度なんか気にするケースじゃないしね。

254 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 18:28:29 ]
何が「再帰は不安定になるんですよ」だよ馬鹿もんが

255 名前:249 [2007/06/08(金) 18:29:22 ]
速度を上げる為に複数スレッドで読み込みたいんですよ
再帰だと出来ないんです・・・・



256 名前:デフォルトの名無しさん [2007/06/08(金) 18:31:38 ]
ここに複数スレッドでうごいているようなソフトがあるんですけど・・・
どうやればいいんですか???


フォルダサイズ調査  『 D-Usage.exe 』
hp.vector.co.jp/authors/VA032597/Software/DirMan.html

257 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 18:32:30 ]
ドライブ資源は1個なのに、複数スレッドでアクセスしたら、
かえって遅くなるような気がしないでもない

258 名前:デフォルトの名無しさん [2007/06/08(金) 18:35:07 ]
>>250
進める前に、ディレクトリ情報を取得しておいて
自分でそこのディレクトリを設定し直せばいいってことか
それでできそうかも

259 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 18:36:02 ]
(一般的には)無駄なシークが発生して、遅くなります。

260 名前:デフォルトの名無しさん [2007/06/08(金) 18:36:15 ]
>>257
実際にデータを読み込む訳ではないんですよ

261 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 18:37:02 ]
FindFirstFile()が返してきたハンドルをスタックとして
もっとけばいいだけじゃないの?
そのハンドル持っとけば、次にFindNextFile()呼んだらちゃんと
続きから返ってこないか?


262 名前:257 mailto:sage [2007/06/08(金) 18:39:04 ]
>>260
俺は >>259 のことを想定して書いた。 余計なシーク発生するから遅くなるんじゃね? ってこと

263 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 18:42:22 ]
>>256
そのアプリなら、2スレッドしか動かしていないよ。
恐らくは、GUIスレッドと調査スレッドか。
動きを見ていても、とても複数スレッドでやっているようには見えない。
調べもしないで想像で語る愚に填まったね。

264 名前:249 [2007/06/08(金) 18:46:10 ]
複数の方が早いですよ

複数スレッド
D-Usage. 36s
hp.vector.co.jp/authors/VA032597/Software/index.html

単一スレッド
VCDCASE 45s
www.hi-ho.ne.jp/hiro30/

265 名前:デフォルトの名無しさん [2007/06/08(金) 18:49:33 ]
C言語なんですが
自作関数で実引数で文字列を返す事は可能ですか?



266 名前:257 mailto:sage [2007/06/08(金) 18:49:52 ]
>>264
どうやって HDDアクセスが複数スレッドで走っているのを確認したのか教えて欲しい

267 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 18:50:33 ]
>>264
>263

268 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 18:54:11 ]
スレッド1個でも動くものができないのに

269 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 19:00:58 ]
しかし、どうでもいいけどD-Usageとかいうソフト、速いのかも知れないけど使い難いなぁ。
作者本人は悦に入っているようだから別にいいけど。

つーか、VCDCASEは目的が違うじゃん。違う目的のソフトを比較して速度云々って>249はどこまで阿呆を晒せば気が済むんだ?

270 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 19:09:05 ]
>>265
できます

271 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 20:52:54 ]
>>249
A_dir
 - file1
 - file2
B_dir
 - file3

とあった場合に欲しい結果は以下のどっち?
1) A_dir B_dir
2) A_dir file1 file2 B_dir file3

1)ならFdを保存すればOK。

272 名前:デフォルトの名無しさん [2007/06/09(土) 01:52:08 ]
windows環境でTCHARに対応した標準出力へのiostreamを使いわけるようにしたいわけですが
#ifdef UNICODE
#define tcout wcout
#define tcin wcin
#define tcerr wcerr
#define tclog wclog
#endif
#ifdef _MBCS
#define tcout cout
#define tcin wcin
#define tcerr wcerr
#define tclog wclog
#endif
のようにtc*を定義するのは良くないんでしょうか?
もしそうであるならば、大体案としてはどのようなものがありますか?

273 名前:デフォルトの名無しさん [2007/06/09(土) 01:55:20 ]
大体案は代替案のtypoですorz

274 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 01:56:39 ]
#ifdef _UNICODE
iostream& tcin = cin;
(ry

275 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 01:57:45 ]
>>272
とりあえず、_MBCS ブロック内のヤツは cin, cerr, clog にしたほうがいいと思うよ。



276 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 01:57:52 ]
>>272
おそらく、個人・環境等で意見は様々だと思う。
個人的には、4つや5つなら許せるが、こんなことしなくても問題ないようなモノにしたい。

で、その書き方なんだがUNICODEと_MBCSが万が一両方定義されていた場合のことも
考えて、#if-#else-#endifのほうがいいかと。
もしくは、両方定義されていたらコンパイルエラーにするとか。

277 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 02:01:44 ]
>>274
cin の型は iostream じゃなくて istream やね。
そして、_UNICODE の場合は wistream 。

278 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 02:05:01 ]
>>272
実際困っちゃうんだよね、それ。
自分も似たようなコトしてるし、多分大丈夫だと思いますよ。

279 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 02:29:52 ]
回答ありがとうございました。
皆様の意見を参考にこのようにしました。

#ifdef UNICODE
  #ifdef _MBCS
    #error define either only UNICODE or _MBCS.
  #else
    std::basic_istream<TCHAR, std::char_traits<TCHAR> >& Tcin = std::wcin;
    std::basic_ostream<TCHAR, std::char_traits<TCHAR> >& Tcout = std::wcout;
    std::basic_ostream<TCHAR, std::char_traits<TCHAR> >& Tcerr = std::wcerr;
    std::basic_ostream<TCHAR, std::char_traits<TCHAR> >& Tclog = std::wclog;
  #endif
#else
  #ifdef _MBCS
    std::basic_istream<TCHAR, std::char_traits<TCHAR> >& Tcin = std::cin;
    std::basic_ostream<TCHAR, std::char_traits<TCHAR> >& Tcout = std::cout;
    std::basic_ostream<TCHAR, std::char_traits<TCHAR> >& Tcerr = std::cerr;
    std::basic_ostream<TCHAR, std::char_traits<TCHAR> >& Tclog = std::clog;
  #else
    #error define either only UNICODE or _MBCS.
  #endif
#endif

軽く使っただけなんで不具合は分かりませんが、
iostreamやiosfwdでの定義から考えればこれでいけそうに思えます。
_INC_TCHARの定義を必要とするようにとかまだ色々付け加えるべきことはあるとはおもいますが

280 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 03:17:18 ]
fopen("test.txt", "w");
でファイルをオープンしようとしたのですが、どうやら実行ファイルの場所ではなく、
C:\C:\Documents and Settings\ユーザ名
のディレクトリが対象となっているっぽいです。どうにか対象を実行ファイルのある場所にしたいのですが、
どうすればいいのでしょうか?というよりも、普通実行ファイルの場所が対象になると思うのですが、、、

281 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 03:24:21 ]
>>280
>普通実行ファイルの場所が対象になると思うのですが、、、
そんな「普通」はあなたの脳内にしかありません。
大人しく絶対パス指定するなりユーザに設定してもらうなりインストーラで設定するなり
アプリケーションの在り処を検索するなりしてください。

282 名前:534 mailto:sage [2007/06/09(土) 03:49:25 ]
>>280
これ使ってください><
int getExecutedDirectory(const char* argv[], char* dest, size_t dest_sz) {
size_t i = 0;
size_t len;

len = strlen(argv[0]);
while (i < len) {
printf("argv[0][%d]:%c\n", len-i, argv[0][len-i]);
if (argv[0][len-i] == '\\')
break;
++i;
}
if (dest_sz < len-i +2)
return -1;
strncpy(dest, argv[0], len-i+1);
dest[len-i+1] = '\0';
return 0;
}
argvはmain(int argc, char* argv[])のargvで
destは出力先の文字列の先頭ポインタ
dest_szはsizeof(dest)です><
ちなみにこれC++のSTL使うと4行程でできちゃいます><

283 名前:534 mailto:sage [2007/06/09(土) 04:20:39 ]
改良しました><
// コマンドライン引数配列から実行されたディレクトリを取得する
int getExecutedDirectory(const char* argv[], char* dest, size_t dest_sz) {
size_t i;
size_t len;

i = len = strlen(argv[0]);
while (i > 0) {
if (argv[0][i-1] == '\\')
break;
--i;
}

if (dest_sz < i +2 || i == 0)
return -1;

strncpy_s(dest, dest_sz, argv[0], i);
dest[i] = '\0';
return (int)i;
}

284 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 04:36:26 ]
>>281
そんなアプリケーション見たことねえw

285 名前:534 mailto:sage [2007/06/09(土) 04:48:38 ]
まだ直すところありました(^^
// コマンドライン引数配列から実行されたディレクトリを取得する
size_t getExecutedDirectory(const char* argv[], char* dest, size_t dest_sz) {
size_t i;
size_t len;

i = len = strlen(argv[0]);
while (i > 0) {
if (argv[0][i-1] == '\\')
break;
--i;
}

if (dest_sz < i +1 || i == 0)
return -1;

strncpy_s(dest, dest_sz, argv[0], i);
dest[i] = '\0';
return i;
}



286 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 05:58:26 ]
コマンドライン引き数から実行モジュールの場所が得られると思ったら大間違い。

287 名前:534 mailto:sage [2007/06/09(土) 06:31:11 ]
詳しく^^

288 名前:534 mailto:sage [2007/06/09(土) 06:49:51 ]
自己解決しました^^
フルパスじゃないと取得できないので
windowsだとGetModuleFileName()を使うのですね^^
この辺は環境依存になるので注意が必要ですね^^
勉強になりました^^^^;;

289 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 06:51:34 ]
system()関数って凄く謎なのですが・・・。
printf("aaa\n");をコメントアウトするだけで、エラーが出てしまいます。
これは俺が、system()で使う領域を侵してると考えていいのでしょうか?

290 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 06:51:36 ]
1.Unix系はarg[0]にパスが入らないんじゃなかったかな。
2.バッファオーバーランしかけたらエラー処理してくれ
3.Shift-JISだとそのコードはまずくね?「c:\ソ.exeとか」
4.const char* argv[]じゃなくてchar const *const argv[]な

291 名前:534 mailto:sage [2007/06/09(土) 08:06:37 ]
これでどうでしょう?
もうWindows特化ですが(というかUNIXの実行環境が無い(´・ω・`) )

// コマンドライン引数配列から実行されたディレクトリを取得する
size_t getExecutedDirectory(TCHAR* dest, size_t dest_sz) {
_locale_t loc;
size_t len;

// 実行ファイルのフルパスを取得
TCHAR fullpath[4096];
GetModuleFileName(NULL, fullpath, sizeof(fullpath));

// ロケール設定
loc =_create_locale(LC_CTYPE, "japanese");

// 最後の\を見つけて、コピー範囲[fullpath,len)が適用できるようなlenを生成
TCHAR* last_slash = _tcsrchr(fullpath, '\\');
len = last_slash - fullpath +1;

// 出力先の容量が不足ならエラーで-1を返す
if (len-1 == 0 || dest_sz < len) {
if (dest_sz > 0)
dest[0] = '\0';
return -1;
}

// コピーして終端に0
_tcsncpy_l(dest, fullpath, len, loc);
dest[len] = '\0';
return len-1;
}

292 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 08:17:05 ]
>>289
その周辺を晒してくれないとなんとも言えないのだが。

293 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 08:34:05 ]
>>279
std::basic_istream<TCHAR, std::char_traits<TCHAR> >& Tcin = std::wcin;
とかって、ここで TCHAR 使っても意味ない気が。
右辺が明らかに wistream 型だし、
wistream と書いた方がすっきりしていいと思うぜ。

294 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 09:21:55 ]
1.sizeof(fullpath) → sizeof fullpath / sizeof *fullpath
2._tcsrchr(fullpath, '\\')→ _T('\\')
3._tcsrchr(fullpath, '\\') _UNICDEかMBCSが定義されてないとShift-JISは問題起こす(たぶん)
4.dest[0] = '\0'→_T('\0')
5.return -1→return static_cast<size_t>(-1)とか

↓ これで我慢しろ。(UNCパスだと問題あるかも)
std::basic_string<TCHAR> getExePath()
{
TCHAR exe_path[MAX_PATH];
DWORD r = ::GetModuleFileName(NULL, exe_path, sizeof exe_path / sizeof *exe_path);
if( r == 0 || r == sizeof exe_path / sizeof *exe_path )
throw std::runtime_error("うぎゃあ");

TCHAR drive[_MAX_DRIVE], path[_MAX_PATH];
_tsplitpath(exe_path, drive, path, NULL, NULL);

return std::basic_string<TCHAR>(drive) + path;
}

295 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 09:27:16 ]
>>294
sizeof(fullpath)じゃなんであかんのんですか?



296 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 09:54:28 ]
>>294だけど、
GetModuleFileNameの第3引数はバイト単位のサイズでなく配列要素数を
指定する。Unicodeビルドの時はsizeof(TCHAR)が2なので、TCHAR buf[10]は
 sizeof buf = 20
 sizeof buf / sizeof *buf = 10

違ってたらごめん

297 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 10:05:43 ]
>>296
嘘つくな。氏ね

298 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 10:46:05 ]
>>297
ttp://msdn2.microsoft.com/en-us/library/ms683197.aspx
> The size of the lpFilename buffer, in TCHARs.
だから>>296であってる

299 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 17:45:36 ]
ヘッダーファイルで
class temp{
public:
int *func();
};
と書いた場合、funcの定義はどう書き始めればいいですか
int temp::*func()
int temp::(*func())
int *temp::func()

300 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 17:59:13 ]
一番下じゃないとVSのインテリセンスが効かなかったので一番下

301 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 18:05:51 ]
>>299
コンパイルできるのは一つだけしかないだろ?

302 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 18:16:44 ]
>>299
int* func();

303 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 19:58:45 ]
>>279
テンプレートデフォルト引数があるんだから
std::char_traits<TCHAR>まで律儀に指定しなくてもいいと思う

304 名前:デフォルトの名無しさん [2007/06/10(日) 00:26:59 ]
ちょっと相談。

CSV形式のテキストファイルを採用することになったんだけど、
エスケープの方法など、細かい仕様について悩んでる。
この辺の定番仕様ってどんな感じかな。
専用の入力ツールを用意しない場合、やっぱりExcelあたりに合わせるのがベターだろうか。

で、その定番仕様に対応したCまたはC++のライブラリがあればお願いします。

305 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 00:30:56 ]
csvってRFCできてなかったっけ



306 名前:304 mailto:sage [2007/06/10(日) 00:59:15 ]
RFCあるのか……ありがとう、ちょっと探してみる

307 名前:デフォルトの名無しさん [2007/06/10(日) 02:42:21 ]
C++で自分で作ったクラスのVectorを使ってVector aを宣言して
-aを使いたいのですがどのようにすればよいでしょうか
よろしくおねがいします

308 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 02:44:07 ]
>>307 まず服を脱ぎます。

309 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 02:46:32 ]
ええとよくわからんけど
-演算子をオーバーロード?

310 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 02:46:58 ]
単項演算子を使いたいってこと?
2次元ベクトルの例だと、Vectorのメンバに
Vector operator - () const {return Vector(-x, -y);}
みたいな感じか?

311 名前:307 mailto:sage [2007/06/10(日) 02:54:52 ]
解決しましたありがとうございました

312 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 04:01:52 ]
linuxで標準ライブラリをインストールしたいのですが
glibc-2.5.0-0exp1
glibc-2.5.0-0exp2
の違いってなんですか?

313 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 07:16:07 ]
1と2

314 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 11:47:50 ]
>>312
そのパッケージは Ubuntu にしか無いっぽいな、
俺はFedora使いだからよくわからん

Ubuntu系のスレにでも行ったほうがよさげだ


315 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 13:20:40 ]
ファイル情報の取得の仕方教えて。




316 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 13:24:06 ]
stat

317 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 13:30:01 ]
file

318 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 14:10:54 ]
Windows環境で,任意のファイルが変更された時に,
変更の種類(作成,更新,削除等)と,変更を与えたプロセスを
出力するプログラムを作成しようと思っています.

変更の検知とその種類に関しては,Win32APIのReadDirectoryChangesWで
取得できるのですが,変更を与えたプロセスの取得方法が
Win32APIや.NETを探しても分かりません.
何か方法があれば教えていただけませんか?

319 名前:318 mailto:sage [2007/06/10(日) 14:11:45 ]
すみません,
Windows環境 → WindowsXP環境
です

320 名前:デフォルトの名無しさん [2007/06/10(日) 14:56:21 ]
VB.NETとC#.NETで、大きく異なる点とは、どういうとこでしょう?
考えたかとか、コーディングの仕方で教えてください。

321 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 15:09:24 ]
元が VB か C/C++ か、の差

322 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 15:11:46 ]
#include <iostream>

struct A {
  A(){
     std::cout << "A" << std::endl;
   }
   ~A() {
     std::cout << "~A" << std::endl;
   }
   template<class T>
   static void func() {
     std::cout << "func" << std::endl;
   }
};

int main() {
   A().func<int>();
   return 0;
}

以上のプログラムを実行すると
vc, gccでは
A
func
~A
と出力され、bccでは
func
~A
と表示されました。
コンストラクタが呼ばれないのはbccのバグでしょうか?
ちなみにメンバ関数にtemplateを使わなかったりstaticでなければ問題なくコンストラクタは呼ばれるようです。

323 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 15:19:03 ]
>>322
バグだね。 bcc なんて使わなけりゃいい。

324 名前:320 [2007/06/10(日) 15:24:40 ]
メモリーの考え方とか、大きく違ったりしませんか?
定数、変数のきり方とか・・・・
インスタンスの方法とか、考え方とか・・・

単に、方言が違うだけ?

325 名前:322 mailto:sage [2007/06/10(日) 15:38:39 ]
>>323
レスどうもです。
やはりバグですか。
bccはコンパイル速度しか売りがないのかなと感じる今日この頃。



326 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 15:39:27 ]
>>324
.NETスレは他にあるだろ。なんでここで聞くんだ?

どのくらい違うかの位置関係はこんな感じで、
VB6−−−−−−VB.NET−C#
メモリーの考え方とかインスタンスの考え方はVB6から大きく変更になってる。

327 名前:320 [2007/06/10(日) 15:55:44 ]
ごめん。
C#スレと勘違いしてた。

328 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 18:12:08 ]
あれだけ#の種類を変えて頑張っているのにw

329 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 19:01:15 ]
構造体/クラスを関数に渡すときは、ポインタか参照が使われることが一般的のようですが、
戻り値が構造体/クラスなのは普通ですか?

330 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 19:08:14 ]
>>329
コピーが重い場合には避けられるけど、単純にポインタや参照にして
置き換えられないこともあるので、引数に比べれば使われる機会は多いでしょう。

331 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 19:21:23 ]
ttp://www.cs.bme.hu/~bodon/en/apriori/
↑のサイトのプログラムを落として
makeしてみたらエラーがでて、makeできませんでした。
どのようにしたらmakeできますか?

実行はCygwin上で行ってます。

エラー内容は
$ make
g++ Input_Output_Manager.o Apriori.o Trie.o Apriori_Trie.o main.o -o ../apriori

Input_Output_Manager.o: In function `_ZN20Input_Output_ManagerC2ERSt14basic_ifstreamIcSt11char_traitsIcEEPKc':
Input_Output_Manager.cpp:(.text+0x2f): undefined reference to `_ZNSt9basic_iosIcSt11char_traitsIcEE4initEPSt15basic_streambufIcS1_E'
Input_Output_Manager.cpp:(.text+0x4a): undefined reference to `_ZNSt13basic_filebufIcSt11char_traitsIcEEC1Ev'



Input_Output_Manager.o:(.gnu.linkonce.r._ZTI20Input_Output_Manager+0x0): undefin
ed reference to `_ZTVN10__cxxabiv120__si_class_type_infoE'
Input_Output_Manager.o:(.gnu.linkonce.r._ZTI20Input_Output_Manager+0x8): undefin
ed reference to `_ZTISt14basic_ofstreamIcSt11char_traitsIcEE'
collect2: ld returned 1 exit status
make: *** [../apriori] Error 1

332 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 19:42:17 ]
>>331
うちとは環境が違うけど,Trie.cppの
bool Edge_point_less(const Edge edge, const itemtype label)
の閉じ括弧の後のセミコロン取り除いて
一度make cleanしたあとmakeしたら成功したよ


333 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 19:48:07 ]
>>329
小さい構造体/クラスならないこともない。
複雑なクラスだとあまりやらない。皆無ではないかもしれんが。

演算子オーバーロードの戻り値は例外で、状況により普通に使うが、
速度が欲しいとき用にそうでない関数を用意した方がいいと思う。

334 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 20:20:48 ]
>>332
成功しました。ありがとうございます。

335 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 20:23:04 ]
>>332
暇人乙



336 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 20:52:44 ]
>>335
暇潰しにもならんかったよ


337 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 20:54:11 ]
暇過ぎw






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

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

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