【初心者歓迎】C/C++室 Ver.14【環境依存OK】
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
05/02/21 03:38:48ただしその場合、質問者は必ず、環境を書きましょう。
※sageは禁止です。
【歴代スレ】
1:http://pc5.2ch.net/tech/kako/1059/10590/1059041347.html
2:http://pc5.2ch.net/tech/kako/1067/10671/1067189450.html
3:http://pc2.2ch.net/test/read.cgi/tech/1069719929/ (消滅?)
4:http://pc2.2ch.net/test/read.cgi/tech/1073473867/ (消滅?)
5:http://pc5.2ch.net/test/read.cgi/tech/1077102238/ (dat落ち)
6:http://pc5.2ch.net/test/read.cgi/tech/1082182233/(dat落ち)
7:http://pc5.2ch.net/test/read.cgi/tech/1086373839/(dat落ち)
8:http://pc5.2ch.net/test/read.cgi/tech/1091264964/(dat落ち)
9:http://pc5.2ch.net/test/read.cgi/tech/1094494997/l50
10:http://pc5.2ch.net/test/read.cgi/tech/1097416187/
11:http://pc5.2ch.net/test/read.cgi/tech/1099190154/
12:http://pc5.2ch.net/test/read.cgi/tech/1101100031/
13:http://pc5.2ch.net/test/read.cgi/tech/1104843249/
【アップローダー】(質問が長い時はココ使うと便利)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
0002デフォルトの名無しさん
05/02/21 03:39:230003デフォルトの名無しさん
05/02/21 03:39:43★初心者にVisual C++を教えるスレ★ Part16
http://pc5.2ch.net/test/read.cgi/tech/1101022051/
■ MFC相談室 MFC12.dll■
http://pc5.2ch.net/test/read.cgi/tech/1096848771/
C++Builder相談室 Part13
http://pc5.2ch.net/test/read.cgi/tech/1108468718/
GCCについて part5
http://pc5.2ch.net/test/read.cgi/tech/1103057320/
cygwin + mingwn + gcc 相談室
http://pc5.2ch.net/test/read.cgi/tech/1058134693/
タダで使えるBorland C++ Part4
http://pc5.2ch.net/test/read.cgi/tech/1091066805/
タダで使えるVisual C++ $2
http://pc5.2ch.net/test/read.cgi/tech/1086287039/
Borland C++ BuilderX
http://pc5.2ch.net/test/read.cgi/tech/1065260556/
Turbo C++ 5.0 プログラミング
http://pc5.2ch.net/test/read.cgi/tech/1030878794/
0004デフォルトの名無しさん
05/02/21 03:40:210005デフォルトの名無しさん
05/02/21 03:40:23C言語なら俺に聞け! Part 102
http://pc5.2ch.net/test/read.cgi/tech/1108056236/
【標準C++】C++相談室 part39【STL含む】
http://pc5.2ch.net/test/read.cgi/tech/1106466303/
C/C++の宿題を片付けます 40代目
http://pc5.2ch.net/test/read.cgi/tech/1107625122/
【C++】template 統合スレ -- Part6
http://pc5.2ch.net/test/read.cgi/tech/1101384692/
C++は難しすぎ 難易度:2
http://pc5.2ch.net/test/read.cgi/tech/1071697977/
C言語の第一歩
http://pc5.2ch.net/test/read.cgi/tech/1031374980/
★C言語で遊ぼう!★
http://pc5.2ch.net/test/read.cgi/tech/1028269762/
プリプロセッサについて熱く語るスレ。
http://pc5.2ch.net/test/read.cgi/tech/1058203590/
C統合・質問スレッド
http://pc5.2ch.net/test/read.cgi/tech/1068359871/
フリーコンパイラー使えよ。
http://pc5.2ch.net/test/read.cgi/tech/1061384369/
C、C++の最適化について語るスレ
http://pc5.2ch.net/test/read.cgi/tech/1084676298/
00061
05/02/21 03:41:180007デフォルトの名無しさん
05/02/21 03:53:24乙
0008デフォルトの名無しさん
05/02/21 05:17:53publicとprotectedとprivateのどれを使うのが適切ですか。
0009デフォルトの名無しさん
05/02/21 07:52:07「オーバーライドするから」と言う理由だけではどれが適切かは決まらない。
そのクラスにとって適切なのを選べ。
0010デフォルトの名無しさん
05/02/21 08:06:510011デフォルトの名無しさん
05/02/21 08:50:440012デフォルトの名無しさん
05/02/21 09:21:06private 継承しても public でオーバーライドか。おめでてーな。
0013デフォルトの名無しさん
05/02/21 21:10:460014デフォルトの名無しさん
05/02/21 23:34:500015デフォルトの名無しさん
05/02/22 07:46:400016デフォルトの名無しさん
05/02/22 14:43:120017デフォルトの名無しさん
05/02/22 17:03:41public:
explicit NullPointerException(const std::string& what_arg) : std::runtime_error(what_arg) {}
};
0018デフォルトの名無しさん
05/02/22 22:14:53これを「4 3 2 1 0」と逆順に表示するように空欄を埋めなさい。
#include <stdio.h>
void main(void)
{
int i;
for(i=0; i<5; i++) printf("%d ", );
}
馬鹿だからわかんねぇ〜〜〜〜!!!!ヽ(`Д´)ノ
0019デフォルトの名無しさん
05/02/22 22:24:44じゃねえ?
0020デフォルトの名無しさん
05/02/22 22:25:420021デフォルトの名無しさん
05/02/22 22:32:03ははは・・・(´ー`)そうですね、ありがとうございました。
こんなのもわかんなかった俺って・・・_| ̄|○
>>20
えぇ、その気持ちわかりますよ。ごめんなさいごめんなさい
0022デフォルトの名無しさん
05/02/22 22:43:040023デフォルトの名無しさん
05/02/22 22:44:330024デフォルトの名無しさん
05/02/22 22:47:30そんなことはないだろ。俺はBCC5.6.2に(ry
0025デフォルトの名無しさん
05/02/22 22:47:380026デフォルトの名無しさん
05/02/22 23:24:060027デフォルトの名無しさん
05/02/23 00:06:350028デフォルトの名無しさん
05/02/23 00:28:45環境によ(ry
使っても使わない時と比べ10Kほどしか(ry
0029デフォルトの名無しさん
05/02/23 00:39:22クラスBは、Aからデータを受け取って処理するクラス。
Aからデータを受け取るときに、hogeからhogexx(hogeから派生)
というふうにキャスト?しちゃってるんですが、これは良くないのですか?
class A{
public:
hoge* GetData();
};
class B{
public:
A *a;
void xmethod {
hogexx *p=(hogexx*) a->GetData();
}
};
0030デフォルトの名無しさん
05/02/23 00:41:440031デフォルトの名無しさん
05/02/23 00:43:37A::GetDataが返す実体がhogexxならいいけど。
0032デフォルトの名無しさん
05/02/23 00:46:33良くないですね。
現状の hoge の定義がわからないと、言い切ることはできないのですが、
おそらく hoge に適切な仮想関数を定義するのが模範解答になると思います。
0033デフォルトの名無しさん
05/02/23 00:46:43class A
class B : public A
のとき
A* pa = new B;
はオッケなのはわかる?
つまり
class 猿
class 人間 : public 猿
のとき
猿を人間にキャストしたら、知能が足りないのでまともな人間にはならない
人間を猿にキャストなら頭のいい猿になるので問題ない
003429
05/02/23 00:59:06ありがとうございます。
クラスAは、もう何年も前にコーディングされhoge自身はまったく更新されていません。
hogeを派生したクラスがいろんなとこで使われているので、templateにするしかないのかな
と思っています。
他に良いほうほうがあったら教えてください。
0035デフォルトの名無しさん
05/02/23 01:22:39もし >29で動作してるとしたらclass Aの返しているhoge*の
インスタンスはhogexxで作られているんじゃないか?
でclass Bでhogexx*にキャストしているのはhogexxのメソッドを使いたいから?
だったらclass B以降でよくつかうhogexxのメソッドをhogeのメソッドにして、
class Bでもhogeで受け取ってそのあとの処理ができるようにするべきでは?
hogeの機能不足が問題だと思われ
実際のソースを見てないからなんともいえないが、小手先のごまかしでなく
きちんと修正すべきだと思われ
それでも修正箇所が極力少なくてすむような修正じゃないとまずいと思うが
一番ダメダメなのは最初にhogexx *p=(hogexx*) a->GetData(); と書いた香具師
修正の時間が取れずに一時しのぎで書いたにせよ、後ででもいいからきちんとした形にしておくべきだったな
苦し紛れのコードを書くと、後の人間が苦労するといういい例
0036デフォルトの名無しさん
05/02/23 01:46:28そのコンテナとしてのみ機能しているなら判らんこともない。
その場合ならclass Aの派生クラスを作ってGetDataをオーバーライドするのが手。
あー、まさかGetDataが仮想関数じゃない?
0037デフォルトの名無しさん
05/02/23 02:30:40オーバーライドでは戻り値の型は変えられないし、
Aがオブジェクトを保持してるんなら、派生クラスでもそれを返すしかないし、
オーバーライドでは何も解決しないと思う。
0038デフォルトの名無しさん
05/02/23 03:58:17>オーバーライドでは戻り値の型は変えられないし、
変えられるんだよ〜ン。
hogexxがhogeをpublic継承している限り、基底クラスAの hoge* GetData()を
派生クラスで hogexx* GetData() でオーバーライドすることは認められている。
ってかこれができなきゃ多態にならんでしょ。
でも、これ、知らんやつが多いんだよなぁw。
>Aがオブジェクトを保持してるんなら、派生クラスでもそれを返すしかないし、
「class Aはhogeおよびその派生クラスの実体の生成には関与せず」って断ってるやン。
当然、格納されているのはポインタか参照であることが前提だわな。
0039デフォルトの名無しさん
05/02/23 04:03:350040デフォルトの名無しさん
05/02/23 04:06:59abstruct class
0041デフォルトの名無しさん
05/02/23 04:09:500042デフォルトの名無しさん
05/02/23 04:16:00http://www112.sakura.ne.jp/~kaientai-project/creategame.htm
0043デフォルトの名無しさん
05/02/23 05:13:01このページの最後の投稿にあるように、mallocが場合によってはデフラグを行なってから
メモリの割付けをしてもいいのですか?
004437
05/02/23 07:42:19> 変えられるんだよ〜ン。
ポインタじゃない場合と勘違いしてた。ごめん。
> 「class Aはhogeおよびその派生クラスの実体の生成には関与せず」って断ってるやン。
ということは、
A は格納されるオブジェクトについて「 hoge およびその派生」を受け付けてしまうので、
これを「 hogexx およびその派生」に狭めることはできないのではないか?
と思う。
004537
05/02/23 07:44:18でもそうなると GetData() が仮想関数である意味が無いな。
0046デフォルトの名無しさん
05/02/23 08:06:47いいですよ。
実際のところは「マネージャ」ってのがMMUになるんだろうな。
ソフトでこれを実装できるかどうかは怪しいし、
できたとしてもパフォーマンス的に実用できないだろう。
0047デフォルトの名無しさん
05/02/23 10:30:41a = new char[1024];
b = new char[1024];
c = new char[1024];
} catch(bad_alloc e) {
return 0;
}
ここで c の new の時に例外が発生した時にはやはり a , b は解放しなくてはいけないのでしょうか
また、スマートな解放の仕方をおしえてください
0048デフォルトの名無しさん
05/02/23 11:31:04debianで動くC++プログラム中で、あるタイミングで
ディスクの空き容量をチェックしたいのですが、
dfコマンドのような関数はありませんでしょうか。
ネットや本でさがしてるんですがプログラム中から
ディスクの空き容量を取得する方法がなかなかわかりません。
0049デフォルトの名無しさん
05/02/23 11:36:16boost::scoped_arrayのようなスマートポインタに突っ込む。
0050デフォルトの名無しさん
05/02/23 13:19:31a = b = c = NULL;
try {
a = new char[1024];
b = new char[1024];
c = new char[1024];
} chatch (bad_alloc e) {
delete a;
delete b;
delete c;
return 0;
}
0051デフォルトの名無しさん
05/02/23 14:14:59つboost::move_ptr
0052デフォルトの名無しさん
05/02/23 21:28:24このうっかりさんめw
a = b = c = NULL;
try {
a = new char[1024];
b = new char[1024];
c = new char[1024];
} catch (bad_alloc e) {
delete[] a;
delete[] b;
delete[] c;
return 0;
}
0053デフォルトの名無しさん
05/02/23 22:49:48オマエモナー
a = b = c = NULL;
try {
a = new char[1024];
b = new char[1024];
c = new char[1024];
} catch (bad_alloc e) {
if(a)delete[] a;
if(b)delete[] b;
if(c)delete[] c;
return 0;
}
0054デフォルトの名無しさん
05/02/23 22:58:48?
delete[] 0;は効果を持たないから、そのif()は必要ない。
0055デフォルトの名無しさん
05/02/23 23:03:47try {
a = new char[1024];
b = new char[1024];
c = new char[1024];
} catch (bad_alloc e) {
delete[] a;
delete[] b;
delete[] c;
return 0;
}
これでOKですか?
delete[] に NULLわたしてもOKですよね・・
0056デフォルトの名無しさん
05/02/23 23:18:12try {
a = new char[1024];
b = new char[1024];
c = new char[1024];
} catch (bad_alloc) { // 使わないんだから変数名は省略できるだろ。
delete[] a;
delete[] b;
delete[] c;
return 0;
}
0057デフォルトの名無しさん
05/02/23 23:54:45try {
a = new char[1024];
b = new char[1024];
c = new char[1024];
} catch (bad_alloc&) { // 使わないんだから変数名は省略できるだろ。
delete[] a;
delete[] b;
delete[] c;
return 0;
}
0 なんか使わない
例外は参照で受け取る
005857
05/02/23 23:55:31s/0/NULL
0059デフォルトの名無しさん
05/02/24 00:01:01代入することが推奨されていると、
それが言いたい訳ね?
0060デフォルトの名無しさん
05/02/24 13:18:55//略
};
main() {
Kanojo shiho;
}
上のコードを実行するとbad_alloc例外が飛んでくるんですがどうすればよいのでしょうか?
0061デフォルトの名無しさん
05/02/24 15:23:51どうすればいいんでしょうね?
あなたが何をしたいのかわからないので答えようがありません。
0062デフォルトの名無しさん
05/02/24 15:34:55を提出してくれれば答えてあげてもいいよ
0063デフォルトの名無しさん
05/02/24 15:51:460064デフォルトの名無しさん
05/02/24 18:53:26cgiにしてApache上で動作させてブラウザからGUI…というのはできましたんで、
そのほかのGUIにする方法を教えて下さい。
もろ初心者です。
0065デフォルトの名無しさん
05/02/24 18:59:210066デフォルトの名無しさん
05/02/24 23:40:49BCCじゃなくてBCBを金を出して買え。
金がないなら必死に「猫でも」でも読んでみろ。
0067デフォルトの名無しさん
05/02/25 12:54:57それはGUIじゃない。
基礎からやり直せ。
0068デフォルトの名無しさん
05/02/25 13:24:18↓どうぞ^^
#include <vcl.h>
#pragma hdrstop
//---------------------------------------------------------------------------
USEFORM("MainForm.cpp", Form1);
USEFORM("Unit2.cpp", Form2);
//---------------------------------------------------------------------------
#include "MainForm.h"
extern TForm1 *Form1;
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
try {
Application->Initialize();
Application->Title = "はじめての>>64GUIプログラミング";
Application->CreateForm(__classid(TForm1), &Form1);
Application->Run();
}
catch (Exception &exception) {
Application->ShowException(&exception);
}
catch (...) {
try {
throw Exception("");
}
catch (Exception &exception) {
Application->ShowException(&exception);
}
}
return 0;
}
0069デフォルトの名無しさん
05/02/25 14:27:57「C(C++)でプログラム組むときは、1関数に1ファイル。」
と教わったことがあります。
でも、そんな事したら、1プログラムで何百ファイルとなってしまいます。
本当に皆さんもこんなことしているのでしょうか?
今でもおかしいと思ってやみません。
0070デフォルトの名無しさん
05/02/25 15:01:42んなわけねぇだろ
0071デフォルトの名無しさん
05/02/25 15:02:24以下のプログラム、核は出来ています。このまま使用しても目的は達成できます。が、
http://tokyo.cool.ne.jp/kuonnnokizunanbalivetehe/CSJS2EUC.C
http://tokyo.cool.ne.jp/kuonnnokizunanbalivetehe/CEUC2SJS.C
この2つのソースコードをJISを経過させずに直接変換させるにはどうしたらいいでしょうか?
0072デフォルトの名無しさん
05/02/25 15:19:530073デフォルトの名無しさん
05/02/25 15:21:07ありえないキチガイだな。
0074デフォルトの名無しさん
05/02/25 15:35:58#1行ですむのにね。
0075デフォルトの名無しさん
05/02/26 00:18:51きみのかち。
0076デフォルトの名無しさん
05/02/26 00:26:390077デフォルトの名無しさん
05/02/26 00:48:240078デフォルトの名無しさん
05/02/26 01:03:23どっかの本(雑誌だったかな?)でも似たようなこと書いた記事見たことある。
当時はそうなんだ、と感心したものだったが、
いまだに実行に移していない(ってか、移せるわきゃ無いだろ)自分がいる。
007969
05/02/26 01:04:5715年来の疑問がやっと解決しました。
どうもありがとうございました。
0080デフォルトの名無しさん
05/02/26 01:15:110081デフォルトの名無しさん
05/02/26 01:20:110082デフォルトの名無しさん
05/02/26 01:25:58リンク後の実行可能ファイルのサイズをちょっとだけ抑える効果ぐらいしかない。
依存関係にある関数同士はどうせ一緒にリンクされるのでライブラリ内でも1ファイルにまとめられていることがある。
0083デフォルトの名無しさん
05/02/26 01:30:260084デフォルトの名無しさん
05/02/26 01:31:380085デフォルトの名無しさん
05/02/26 01:36:100086デフォルトの名無しさん
05/02/26 01:39:230087デフォルトの名無しさん
05/02/26 01:41:010088デフォルトの名無しさん
05/02/26 01:56:05>依存関係にある関数同士はどうせ一緒にリンクされるので
>ライブラリ内でも1ファイルにまとめられていることがある。
その理由を否定する訳ではないが、どちらかというと関数群内で
共通の変数などをstaticでくくって隠蔽する目的もある。
Cのファイル単位のスコープは、C++のクラスが使えるようになるまでは
よく利用された。っていうか今でも利用されている。
0090デフォルトの名無しさん
05/02/26 02:11:25であってますか?
0091デフォルトの名無しさん
05/02/26 02:12:22そりゃJavaだろ
0092デフォルトの名無しさん
05/02/26 02:14:23そうとも限らん。
自分的には1ファイル1ネームスペースが原則。
例外もあるが。
0093デフォルトの名無しさん
05/02/26 02:28:39EMアルゴリズムを回してます。
「アクティブな構成」が「Win32 Debug」と「Win Release」の時で
結果が違うんですけどなぜでしょうか・・・。
収束するとこも違うし、Releaseだとエラーが出て止まってしまうんです。
Visual C++ 6.0、WindowsXPです。
009493
05/02/26 02:34:360095デフォルトの名無しさん
05/02/26 02:38:39スレ違い。
こっち
★初心者にVisual C++を教えるスレ★ Part17
ttp://pc5.2ch.net/test/read.cgi/tech/1107926989/l50
009693
05/02/26 02:42:300097mi
05/02/26 12:54:10『キーボードから入力した数字を999が入力されるまで降順にソートしていき、数字の値と共にその数字分の*を表示する。999はデータとして扱わない。配列の要素数は10で11以上の入力はなく、数字以外の入力もないものとする。』
というのをやっているのですが、私が作成した以下のプログラムでは出来ませんでした。どこを直せばいいのか教えていただけないでしょうか?
#include <stdio.h>
void main()
{
intdata[10],i=0,j,max=0,dummy;
while (i < 10) {
if (scanf("%d",&data[i]),data[i] != 999){
printf("max = %d\n",max);
if (max <= data[i]){
dummy = data[i];
data[i-1] = max;
max = dummy;
}
} else {
data[i+1] = EOF;
goto next;
}
i++;
}
next: ;
for(j = 0; data[j] != EOF; j++){
printf("data[%d] = %d\n",j,data[j]);
}
}
0098デフォルトの名無しさん
05/02/26 13:09:52スレ違い。
こっち。
C/C++の宿題を片付けます 40代目
ttp://pc5.2ch.net/test/read.cgi/tech/1107625122/l50
0099デフォルトの名無しさん
05/02/26 21:26:28変数の数値を桁ごとに分けて、
それぞれ別々の変数に入れる方法を教えてください。
0100デフォルトの名無しさん
05/02/26 21:54:411.xを10で割ったあまりをaに入れる
2.aをketa[]に入れる
3.xを10で割ってxに入れる
4.1〜3をxが0になるまでくりかえす
2)
1.xを文字列に変換する
2.その文字列を文字数分ループさせて一文字ずつとりだす
おすきなのをどうぞ
0101デフォルトの名無しさん
05/02/26 22:02:05あまりを使うのですか!
ありがとうございます!
0102デフォルトの名無しさん
05/02/26 22:16:070104デフォルトの名無しさん
05/02/26 23:56:29sprintf()で文字列にして、
sscanf()で一桁ずつ取り出せばいいのでは?
# って、>>100でガイシュツか…
0105デフォルトの名無しさん
05/02/27 17:22:05`A' was not declared in this scope
というエラーがでてしまうのですが,どうすれば良いのでしょうか?
= A.h:
class A {
public:
typedef struct Hoge {
...
} hoge;
}
=B.h:
#include "A.h"
class B {
public:
B(A::hoge *hoge); // ここでエラー
}
0106デフォルトの名無しさん
05/02/27 17:24:480107デフォルトの名無しさん
05/02/27 21:58:39セミコロン落ちはコピペしたときのミスとすれば
エラーの原因はそこに引用した以外の部分にあるはず。
0108デフォルトの名無しさん
05/02/27 22:01:00typedef Hoge {
...
};
class A {
public:
Hoge hoge;
};
--- B.h --------------:
#include "A.h"
class B {
public:
B(Hoge *hoge);
};
とりあえずこれならOKだよな?
0109デフォルトの名無しさん
05/02/27 23:54:24多分、
×typedef Hoge {
○struct Hoge {
なんだろうな。
それなら通る、ってか>>105だって(セミコロンは要るが)通るはずなんだよ。
結局、省略してないソース全体を見なきゃ何も判らないよ。
0110デフォルトの名無しさん
05/02/28 00:19:36#include<stdlib.h>
int main(int argc,char *argv[])
{
FILE *fp;
unsigned count;
if(argc!=2){
exit(1);
}
if((fp=fopen(argv[1],"rb"))==NULL){
exit(1);
}
count=0;
while(!feof(fp)){
fgetc(fp);
if(ferror(fp)){
exit(1);
}
count++;
}
printf("%u",count-1);
fclose(fp);
return 0;
}
Press any key to continueで終わってしまうのですが、
コマンドラインでファイルを指定するという方法はどうすればいいのですか?
ファイルのバイト数を表示するプログラムらしいのですが。
何かプログラムソースに付け加えたり、新しいテキストファイルを作るのでしょうか?
MS-DOS プロンプトでいろいろ試しましたが、よくわかりません‥。
0111デフォルトの名無しさん
05/02/28 00:46:20そのプログラムの実行方法がわからんということか?
コンパイルしたら
./a.out hoge.dat
と打ってみろ。
0112デフォルトの名無しさん
05/02/28 00:53:54UNIXじゃなくてwindowsなんです、すみません‥。
Visual C++でやってるんですが、
Press any key to continueのあとは何も書き込めないみたいです。
コマンドライン引数について勉強不足なのでちっと勉強してみます。。
0113デフォルトの名無しさん
05/02/28 01:51:16DOSプロンプトに
出来たexe名 引数
と打つか、VC++のIDEから実行するなら引数を指定するとこがメニューのどっかにあるはず。
0114デフォルトの名無しさん
05/02/28 02:32:56とすると、「コマンドまたはファイル名が正しくありません.」
はでません。引数は謎です。
0115デフォルトの名無しさん
05/02/28 04:49:20プログラミングの前にコマンドプロンプトの使い方を勉強してこい。
0116デフォルトの名無しさん
05/02/28 11:52:15これ消せ
0117デフォルトの名無しさん
05/02/28 12:31:13イエス、アー
0118デフォルトの名無しさん
05/02/28 18:00:35http://www.microsoft.com/windows95/downloads/contents/WUToys/W95PwrToysSet/Default.asp
ついでにSendToX、ContentsMenu(Win2000では動作不可)もおすすめ。
0119v(^・^)v
05/03/03 23:56:280120デフォルトの名無しさん
05/03/04 05:30:580121C++初心者
05/03/04 13:14:31標準関数や、WindowsAPIなどで文字列へのポインタを返してくれる関数が
いくつかあるようなのですが、その文字列のメモリ領域?は誰がいつ解放して
いるのでしょうか・・。。
WindowsAPIでプリンタ名などの文字を返してくれる関数を使っていて
とても気になり始めました・・。
宜しくお願いいたします。
0122デフォルトの名無しさん
05/03/04 13:18:13>>121
ヘルプ嫁
0123デフォルトの名無しさん
05/03/04 13:34:52概ね、4種類のパターンに分かれる。
1)システム固有などの固定領域にある文字列へのポインタを返す。
→アプリケーションの存在期間を通して気兼ねなく使える。
2)クラス固有などの動的領域にある文字列へのポインタを返す。
→クラスの存在期間を通して気兼ねなく使える。
3)関数固有などの領域に一時的に文字列をコピーしてそれへのポインタを返す。
→関数呼び出しごとに破壊されるので呼出し後にコピーしておく必要がある。スレッドセーフではない。
4)ヒープなどの領域からメモリを確保し、そこに文字列をコピーしてそれへのポインタを返す。
→自前で解放などする必要がある。
0124デフォルトの名無しさん
05/03/04 13:38:520125121を書いた者です。
05/03/04 15:03:15>>122様
すみませんでした・・・
一応わからないなりに、MSDNとやらも見てみたのですが
それらしい記述を私が見つけることができずに、もやも
やしてしまっていました。。調べたのは下記URLです。。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpgdi/html/_win32_enumprinters.asp
>>123様
>>124様
ありがとうございます。
たくさん種類があるのですね・・
上記URLのAPIしか今のところわからない・・ので、
もし自前で解放しなければならない関数がでてき
たときはMSDN等のAPIリファレンスに記載されてい
るものなのでしょうか・・?(逆にいうとEnumPrinters
は何も記載が見つからないので何もしなくてもよい<123の1)にあたる>?)
0126デフォルトの名無しさん
05/03/04 15:20:12いろいろ問題があるなぁ。
・その関数はポインタを返さない。
返すのはBOOLだ。
・その関数が返してくれる情報は、呼び出し側が用意したバッファに格納される。
そのバッファをどう扱うべきかは呼び出し側が承知しているはずだ。
従って、>123→124のいずれのケースにも該当しない。
0127123=126
05/03/04 15:22:43即ち、>122の言うようにヘルプを読みさえすれば>126で書いたような情報が得られるわけだ。
0128121を書いた者です。
05/03/04 15:30:04まだぜんぜん何もわかってないようです・・もう少し勉強してから
出直します・・
板汚しすみませんでした。
0129デフォルトの名無しさん
05/03/05 00:13:36ま、「初心者歓迎」なので。
もう見てないかもしれんが、あんま落ち込まないようにな。
とりあえず Windows 云々の前に C/C++ 一般の勉強をした方がいいと思う。
ポインタとかメモリ確保とか。
未初期化のポインタ渡してメモリ破壊とかしてそうだぞ。
0130デフォルトの名無しさん
05/03/05 00:26:330131デフォルトの名無しさん
05/03/05 14:27:15enum Keyname { keyShift, keyCtrl, keyAlt };
int k = 1;
Keyname optionkey = static_cast<Keyname>(k);
0132デフォルトの名無しさん
05/03/05 15:03:07かまわんけど普通は
Keyname optionkey = Keyname(k);
0133デフォルトの名無しさん
05/03/05 16:31:14enumに別の型を代入するのは設計が悪い。
0134デフォルトの名無しさん
05/03/05 16:42:12�d
>133
設定ファイルやコントロールへの出入力で使ってるのですが‥‥
0135デフォルトの名無しさん
05/03/05 17:11:07switch (k)
{
case 0:
opt = keyShift;break;
case 1:
opt = keyCtrl;break;
case 2:
opt = keyAlt;break;
}
もしくはenum型を使うことを諦めて、ただの整数型として保持。
enum型を使う以上、要素以外の値が代入される可能性を0にしなければ意味がない。
0136デフォルトの名無しさん
05/03/06 11:48:36「画面に『こんにちは。』と表示して改行を行う関数
void hello(void){ /* … */ }
を作成せよ。」
という問題がいくら考えてもわかりませんorz
出来ればヒントを提示して頂けたらありがたいのですが…。
それ以前の問題は一応解けます。
携帯から書いたので記述が至らないところもあるかも知れませんがよろしくお願いします。
0137デフォルトの名無しさん
05/03/06 12:00:14単に標準出力に文字出すだけならprintfで十分じゃないか?
0139デフォルトの名無しさん
05/03/06 12:44:32その本を最初から読みなおせ。
0140デフォルトの名無しさん
05/03/06 12:46:06っていうレベルだな・・・
0141デフォルトの名無しさん
05/03/06 12:46:41……いくらなんでもこんなことがわからないはずあるか?たぶん別のことで悩んでるんだと思うけど
0142デフォルトの名無しさん
05/03/06 12:59:38enum型の値に、要素以外の値、例えば>>131の例では範囲:0-2以外の数値を代入しようとすると
型エラーが出るから、>>132の書き方で十分安全じゃないか?
さらには、
enum Keyname { keyShift = 1, keyCtrl = 2, keyAlt = 4 };
として、
Keyname optionkey = Keyname(keyShift | keyAlt);
といったことをする可能性もあるので、switch()だと苦しい気がする。
・整数系データ型の値は、明示的に列挙型に変換できる
・算術演算時には、列挙はデフォルトで整数に変換される
ことから、設定ファイルとの入出力においては、列挙型を整数値として取り扱ってもよいと思う。
enum型は、ユーザやコンパイラに、その変数の用途についてのヒントを与えることを目的としてるはずだし。
0143デフォルトの名無しさん
05/03/06 13:08:31質問の仕方が悪い
普通「画面に『こんにちは。』と表示して改行を行う関数を作成せよ」
だったら質問は
・画面に表示する方法がわからない
・改行する方法がわからない
・関数をどうやって作るのかわからない
のどれかだろ?
>138
>こんなに頭の弱い俺に解答お願いします。
頭が悪いとかレベルじゃなくて、本を読む前からなげてるだろ
プログラム以前の問題だからちゃんと本読めばバカでもわかる問題だと思われ
これくらいも独力でできないならプログラムなんかするな、ムカつく
どうせ学校の授業の課題なんだろ
学校の授業なら単位落として、その授業二度と受けるな
必須科目なら、学校辞めちまえ
0144デフォルトの名無しさん
05/03/06 13:55:100145デフォルトの名無しさん
05/03/06 14:05:49equal_rangeで範囲を絞って、std::remove_ifで探索して、eraseで消す。
0146デフォルトの名無しさん
05/03/06 14:10:25multimap <string, int> mm;
size_t a = mm.erase((string)"apple");
a := 削除した要素数
0147デフォルトの名無しさん
05/03/06 14:14:13特定の<keyとvalueのペア>?
0148デフォルトの名無しさん
05/03/06 14:20:59下です
forit ... {
if ((it->first == key) && (it->second == value))
mmap.erase(it);
}
っての作ってみた、やっぱり
>145さんみたいなことしたほうがいいのかな・・・
0149デフォルトの名無しさん
05/03/06 15:45:09そのコードは、multimapの要素がkeyによってソートされているという事実を
利用していないから、無駄が多い。
まずequal_rangeで範囲を絞って、それから、>>145のように標準アルゴリズムを使うなり、
手でループを書くなりして削除すると良いと思う。
0150デフォルトの名無しさん
05/03/06 19:48:48template <typename key_type, typename mapped_type, typename map_type>
void remove_kv(map_type& mm, const key_type& key, const mapped_type& value)
{
typename map_type::iterator first = mm.lower_bound(key), last = mm.upper_bound(key);
while (first != last)
if (first->second == value)
mm.erase(first++);
else
++first;
}
0151デフォルトの名無しさん
05/03/06 21:03:51remove_if は multimap (連想コンテナ)には使えないでしょ。
0152デフォルトの名無しさん
05/03/06 21:40:40>>150
>>151
ご教授ありがとうございました
>>150さんソースありがとうございます!
0153デフォルトの名無しさん
05/03/06 22:41:380154150
05/03/07 01:13:59あえて書くなら
template <typename key_type, typename mapped_type, typename map_type>
void remove_kv(map_type& mm, const key_type& key, const mapped_type& value)
{
std::pair<typename map_type::iterator, typename map_type::iterator> kv = mm.equal_range(key);
typename map_type::iterator first = kv.first, last = kv.second;
// 以下略
}
ですが…equal_range()は本質的にstd::make_pair(lower_bound(key), upper_bound(key))
ですから、特別使う利点を感じませんでしたのであえて使いませんでした。first,lastを
使わずにループ内で何度もメンバ参照を行うのは効率的に論外ですし。もし何か上の
コードに特記すべき利点がありましたら、後学のため教えてください。
0155デフォルトの名無しさん
05/03/07 01:24:12>2つの別個の演算で先頭と末尾を探索するのは、エレガントでも効率的でもない。
>そのため、両方を同時に取得する equal_range() が用意されている。
とのこと。効率悪から equal_range 使えって言いたかったんでない?
0156150
05/03/07 01:31:16高尚な考えは理解できないんでしょう。抜粋ありがとうございます。
これから禿本とEffective STL辺りと睨めっこしてきます…
0157デフォルトの名無しさん
05/03/07 01:33:06lower と upper では内部の処理がダブりに
ダブりまくってるんでしょう
0158デフォルトの名無しさん
05/03/07 02:06:49いや確かにそうなんですが、上述のようにequal_range()は本質的に
std::make_pair(lower_bound(key), upper_bound(key))と同じ…と言うか
他の実装が思いつきません。
当座おとなしくequal_range使っておきます。
0159デフォルトの名無しさん
05/03/07 03:09:41型エラーって何?
>Keyname optionkey = Keyname(keyShift | keyAlt);
Keynameにとって範囲外の値「5」を代入するな。で、型エラーって何。
0160デフォルトの名無しさん
05/03/07 03:12:13禿本ってよく出てくるけど,正式名称わかんないんだ
推薦図書・必読書スレでもよーわからんし…
誰か教えてちょ
0161デフォルトの名無しさん
05/03/07 03:15:35http://pc5.2ch.net/test/read.cgi/tech/1106527792/
このスレのテンプレを見れば納得
0162デフォルトの名無しさん
05/03/07 03:24:17>>161�dクスブラザー
0163デフォルトの名無しさん
05/03/07 03:27:280164デフォルトの名無しさん
05/03/07 08:51:07禿本ってなんでした?よくわからなかったので教えていただけないでしょうか
0165デフォルトの名無しさん
05/03/07 10:15:141. 型エラーについて
型エラー : invalid conversion from `int' to `Keyname'
列挙子に対しては、「明示的」 にしか、整数系データ型の値を入れることはできない。
従って、直接数値を代入する書き方は違法であり、型エラーとなる。
Keyname optionkey = 5; // 型エラー
Keyname optionkey = Keyname(5); // ok
2. 列挙子の範囲について
例えば、
enum Keyname { keyShift = 1, keyCtrl = 2, keyAlt = 4 };
と定義したときの、Keyname型の上限値は 「7」 である。
これは、
> 列挙の上限は、列挙に含まれるすべての列挙子の値よりも大きい
> 2の累乗値マイナス1のなかでもっとも小さい値である。
による。
もし>>159がこれまで列挙子について誤解をしていたのなら、
文字通りの例が禿本(プログラミング言語C++ 第3版)の§4.8 列挙(手元の第一刷ではp.112)
に書かれているから、読み直して勉強するといい。
0166デフォルトの名無しさん
05/03/07 10:41:340167デフォルトの名無しさん
05/03/07 10:48:57dynamic_castが出てくるからC++の話のはずなんだが。
0168↑
05/03/07 10:49:42○static_cast
0169150
05/03/07 18:21:24いうよりもコーディング労力的な効率ですね。
0170デフォルトの名無しさん
05/03/07 23:07:28他のサイトを見てもほとんどが、広域変数として扱っているか、main関数内での使用例しか書いていない。
VC++6.0を使用しているけど、何処か参考になるサイトってあります?
0171デフォルトの名無しさん
05/03/07 23:52:08sscanf や strtod を使用してみたのですが、ULONG_MAX の文字列を入れた時、
期待したものと違う値になってしまいます。
どのように変換するのがよいのでしょうか?
0172デフォルトの名無しさん
05/03/07 23:56:26自前で変換関数をかきなされ。
0173デフォルトの名無しさん
05/03/08 00:00:29どのような変換が正しいのでしょうか?
一文字ずつ変換して10かけて…、とかそう言うヤツですか?
0174デフォルトの名無しさん
05/03/08 00:54:030175デフォルトの名無しさん
05/03/08 01:04:33enum E { A, B };
E e = static_cast<E>(2);
↑範囲外の数値を代入しようとしているが、型エラーは出ない。
これでも安全か?
0176デフォルトの名無しさん
05/03/08 01:15:25Pascalと混同するな。
C/C++のenumは範囲をチェックしているわけではありませんから。
0177デフォルトの名無しさん
05/03/08 01:17:522^n-1などという上限を設けるということは、任意のnビットの変数が存在できることにならないか?
それを実現させるメリットが現実問題としてあるかどうか・・・。
bool型でさえ8ビット変数だというのに。
0178175
05/03/08 01:30:15俺はそんなこと承知なんだが、
>142が範囲外の値の代入に対して型エラーが出ると言ってるんで、
>159と同じ疑問を抱いたんだが、自身たっぷりに返してる>165がどうにも気になったわけよ。
0179デフォルトの名無しさん
05/03/08 02:15:45ねー、>>165の2.についてなんだけど、これは俺も読んでて知ってるんだけど、
有名どころのコンパイラでエラーか警告になる例何かある?
0180デフォルトの名無しさん
05/03/08 02:25:19無い。っていうか、変数を static_cast で enum に変換するケースを考えると、ほとんど無理。
0181デフォルトの名無しさん
05/03/08 05:36:550182デフォルトの名無しさん
05/03/08 07:49:31ダブル値を 例えば15単位までをとる方法を教えてください。
例えば a=b/c のaに1.12345678901234 のように全部で15個の数字で
保存されるようにしたいです。
よろしくお願いいたします!
0183デフォルトの名無しさん
05/03/08 08:04:28つ[練炭]
0184デフォルトの名無しさん
05/03/08 08:05:42× ダブル値
○ double型の値
× 15単位
○ 15桁
double型の値は数字で保存されているわけではないので、多分無理。
表示結果が15桁になるだけでいいのなら printf で可能。
0185デフォルトの名無しさん
05/03/08 08:48:02但し、誤差の取り扱いには注意。
0186デフォルトの名無しさん
05/03/08 09:31:450187デフォルトの名無しさん
05/03/08 09:39:12typedefはファイル内でしか有効でない。(ブロック内に書けばブロック内だけが有効範囲になるけど)
共通のヘッダに書かなければいいだけ。
0188186
05/03/08 09:39:21define でいう undef みたいなのはないですかね
0189デフォルトの名無しさん
05/03/08 09:41:49レスありがとうございます
typedef を使わないで直接全部書けばいいのですか・・・
0190デフォルトの名無しさん
05/03/08 09:42:44intとかの基本型の配列の時とやり方は同じ。
struct hoge {/* 〜 */};
void f(hoge ho[]);
int main()
{
hoge h[4];
f(h);
return 0;
}
0191デフォルトの名無しさん
05/03/08 11:31:46みたいなことできないんですか
できないなら他にnewする方法ありますか
0192デフォルトの名無しさん
05/03/08 11:48:14普通にできんか?
0193デフォルトの名無しさん
05/03/08 11:52:580194デフォルトの名無しさん
05/03/08 12:56:51根本から間違ってる。
バッティングしない名前を使え。
0195デフォルトの名無しさん
05/03/08 13:03:21ダイアログウィンドウにクラスや構造体のポインタを関連付けることはできますか?
通常ウィンドウは、RegisterClass()でクラス登録するときに
cbWndExtreにポインタサイズを設定し、SetWindowLongPtrで0を指定すれば関連付けられたのですが、
こういう事をダイアログでできるのでしょうか?
環境はVS.NET2003です。回答お願いします。
0196デフォルトの名無しさん
05/03/08 13:06:44SetWindowLong()のGWL_USERDATAではダメなのか?と(ry
0197デフォルトの名無しさん
05/03/08 13:08:42が、配列の大きさを引数で指定しても、関数の中での配列宣言時にエラーになりますよね?
エラーにならずに宣言する方法って無いんですか?
0198デフォルトの名無しさん
05/03/08 13:10:09C++ なら、namespace に閉じ込めてはどうか。
0199デフォルトの名無しさん
05/03/08 13:11:32SetProp/GetProp
0200デフォルトの名無しさん
05/03/08 13:15:09ありがとうございました。うまくいきそうです。
0202デフォルトの名無しさん
05/03/08 13:43:46feofかferrorで調べる
0203197
05/03/08 15:50:160205デフォルトの名無しさん
05/03/09 00:54:18ポインタと同じような扱い、というのはわかりました。
単純に要素をみたい場合は*をつければ(*pみたいにして)いいとは思うのですが、もし要素がクラスとか構造体の場合はどうすればいいですか?
*p->〜みたいにするとコンパイルエラー出ました。
詳しい方、教えていただけると光栄です。
0206デフォルトの名無しさん
05/03/09 01:08:300207デフォルトの名無しさん
05/03/09 01:54:09要素が構造体テンプレートの場合の例。
#include <algorithm>
#include <vector>
#include <iostream>
int main()
{
std::vector<std::pair<int, int> > foo;
foo.push_back(std::make_pair(0, 1));
foo.push_back(std::make_pair(1, 2));
for (std::vector<std::pair<int, int> >::iterator it = foo.begin(); it != foo.end(); ++it) {
std::cout << it->first << '\n';
}
return 0;
}
斯くの如く、普通にアロー演算子を使うだけ。
0208デフォルトの名無しさん
05/03/09 02:24:42Java厨なんですが、C++はじめました。
Javaしか知らないのですが、Cから勉強すべきでしょうか。
それともC++からいきなり入ってよいものでしょうか。
ポインタのあたりが心配です。
当方スペックはJavaだとdeep copyとshallow copyがなんとなくわかる程度です。
0209デフォルトの名無しさん
05/03/09 02:30:010210デフォルトの名無しさん
05/03/09 02:30:04C++からでヲケ。ポインタはいずれにせよ身につけないかんが。
0211デフォルトの名無しさん
05/03/09 02:31:540212デフォルトの名無しさん
05/03/09 02:41:08レスサンクスです。
独習C++で始めようと思ってるですが、
レス見た感じ、とりあえずC++からいっちゃっていいですかね。
んで、ポインタで煮詰まったらCをザックリやろうかな、と。
どうもでした〜。
0213205
05/03/09 08:18:04>>206
そのようなメンバはありません、といわれます。
>>207
明示的なアドレス解決演算子が必要と言われます。
プログラム的には以下のような感じです。
class Class1{
public:
void f1();
void f2();
private:
int a, b;
}
class Class2{
public:
int f3{
vector<CCar>::iterator p;
p->f1(); //この部分でエラーになります。
private:
vector<Class1> hoge;
}
0214205
05/03/09 08:19:19p = hoge.bugin();
を追加してください。
0215デフォルトの名無しさん
05/03/09 08:53:270216デフォルトの名無しさん
05/03/09 08:56:25int f3 はカッコが無いが、関数のつもりか?関数の中で private: ?
CCar ってなんだ?
エラーの出るソースをそのまま貼れ。馬鹿者。
エラーメッセージはコピペしろ。未熟者。
0217デフォルトの名無しさん
05/03/09 09:05:59言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。
0218デフォルトの名無しさん
05/03/09 09:43:26おーい、「独習C++」はC経験者向けの本だぞ。
こんなのいきなり読んで分かるわけないだろ。
C未経験者なら「標準講座C++」か「はじめてのC++」あたり。
0220デフォルトの名無しさん
05/03/09 12:09:31>>213には>>216の回答で十分。
0221デフォルトの名無しさん
05/03/09 12:35:12礼儀を知らない質問者も迷惑だが、
傲慢な回答者も同じくらい迷惑だ。
0222デフォルトの名無しさん
05/03/09 12:40:21アホな質問者への態度など傲慢でもなんでもいいってことだろ
0223デフォルトの名無しさん
05/03/09 13:03:22リソースで作ったダイアログをDialogBox()で表示する際
プロシージャにデータを送るにはグローバル変数使うしかないでしょうか?
0224デフォルトの名無しさん
05/03/09 13:24:43いいえ
0225223
05/03/09 13:26:490226デフォルトの名無しさん
05/03/09 13:27:390227デフォルトの名無しさん
05/03/09 13:34:11スレ違い。
自分の開発環境に合わせた適当なスレに移動汁。>>3
0228223
05/03/09 13:37:450229223
05/03/09 13:42:32すみませんでした。
0230デフォルトの名無しさん
05/03/09 13:49:49メッセージでもイベントでも好きなもの使えばいいんじゃね?
0231Aransk
05/03/09 14:17:59Javaの話が全然出て来ない?と不思議に
思ってたら、「1994年」の本を翻訳したもの。
我々日本のC++プログラマーは10年!以上
遅れているのか?10年前の情報が日本のC++界では
未だに役に立つのか?
0232デフォルトの名無しさん
05/03/09 14:23:16DialogBoxParam()
0233223
05/03/09 14:38:33>>230
モーダルダイアログなのでその方法は無理そうでした。
説明足らずですみませんでした;
>>232
もっと他の方法で実装しようかと思ってましたけどこんな
便利な関数があったとは・・・。
ありがとうございました。
0234デフォルトの名無しさん
05/03/09 15:28:01これにtreeを作るために
class HyperNode : public Node {
リストクラスのポインタ;
etc.
}
のポインタをぶらさげようとしています。現状で
すべてのNode,HyperNodeの成分をvoid print_all(&cout)と
virtual void Node::print_node(&cout),
virtual void HyperNode::print_node(&cout){
Node::print_node(&cout);
ホニャラ->List::print_all(&cout);
}
でtreeをたどって出力することはできますが、似たような作りの関数で
各々のNodeの成分をいじると、rootのnodeやらリストやらがなくなって
しまい、treeをロストしてしまいます。
クラスの設計がまずいのでしょうか、それとも個々の関数のコーディング
ミスでしょうか。よろしくお願いします。
0235デフォルトの名無しさん
05/03/09 15:47:150236デフォルトの名無しさん
05/03/09 16:00:17リストクラスではNodeポインタで保持すると定義しているところに
よりサイズの大きいHyperNodeポインタをぶら下げるとトラブルの
もとになるでしょうか。と訂正します。よろしくお願いします。
0237デフォルトの名無しさん
05/03/09 16:13:000238デフォルトの名無しさん
05/03/09 16:29:05あんたの拙い日本語を読解する努力するくらいならソースを見たほうがましだと思うよ。
0239デフォルトの名無しさん
05/03/09 18:03:49C++を使うのは初めてなので間違っている記述があればご指摘ください。
いちばんひっかっかっているのが、set_node()においてnew Nodeとして
領域を確保しているのに、HyperNodeをポインタをそこへ渡していることです。
class List {public:
Node *node_ptr;
void set_node(Node *nd) {(node_ptr=new Node)=nd;}};
class HyperNode : public Node {public: List *sublist;};
HyperNode *hnd_ptr; hnd_ptr=new HyperNode;
List::set_node(hnd_ptr);
0240デフォルトの名無しさん
05/03/09 18:51:13あんたの日本語同様支離滅裂で意味不明だな。
とりあえずアドバイスとしてはC++を一から勉強しなおせと。
0241デフォルトの名無しさん
05/03/09 19:07:41優れたプログラマは人間が理解できるコードを書く。」
とは Martin Fowler の言だが、愚かなプログラマは
人間が理解できる文章すら書けないものなのだな。
0242デフォルトの名無しさん
05/03/09 19:19:25コンピュータが理解できる部分は破壊的に不味い事してるし。
( node_ptr = new Node ) = nd;
0243デフォルトの名無しさん
05/03/09 19:26:54ポインタの理解が根本的に間違っているようなので、
C言語の教科書で勉強して下さい。
(node_ptr=new Node)=nd;
これって、どういうプログラム言語の影響なのかなあ?
0244デフォルトの名無しさん
05/03/09 20:40:21ビットシフトと整数インクリメントで求める方法より高い効率を出せる処理ってありますか?
探索方向は昇順でも降順でもアトランダムでも構いません。
0245デフォルトの名無しさん
05/03/09 20:50:29まだ立っていないビットの最短位置、を説明してくれ。
0246デフォルトの名無しさん
05/03/09 21:02:05char型で10111011とあるとすると3番目(4)と7番目(64)がまだフラグが立っていないということです。
3番目が立っているか?ならば(ch & 0x0004)でいいと思うのですが、
そうではなくて、このケースでいうと8ビットあるうちのどの位置でもいいから、高速に位置情報を取得したいのです。
この場合は1がon、0がoffとして表現されていますが、逆でも構いません。
0247デフォルトの名無しさん
05/03/09 21:29:138ビットで比較回数を必ず三回にする事は可能
if (ch & 0x0F) {
if (ch & 0x03) {
if (ch & 0x01) {
// bit = 0;
} else {
// bit = 1;
}
} else if (ch & 0x0C) {
if (ch & 0x04) {
// bit = 2;
} else {
// bit = 3;
}
}
} else {
・・・省略・・・
}
他は、アセンブラ命令でビットサーチ命令を使うとか・・・
0248デフォルトの名無しさん
05/03/09 21:35:38ttp://www.cit.gu.edu.au/~anthony/info/C/bit_programming.txt
この手のネタ?
0249デフォルトの名無しさん
05/03/09 21:57:49ハゲワロス
0250デフォルトの名無しさん
05/03/09 22:13:46入力した数の、立っているビット位置を表示
(0〜31 立ってない時は表示しない)
int main () {
{
int n;
printf ("input number: ");
scanf ("%i", &n);
if (n) {
_asm {
bsr eax, n
mov n, eax
}
printf ("%d\n", n);
}
return 0;
}
0251デフォルトの名無しさん
05/03/09 22:14:10body obj1,obj2(2.5,1.5,2.0);
このサイトのこの行で
クラス、構造体、共用体にデフォルト コンストラクタがありません。
とでるのですが、visualC++6.0の設定がおかしいのでしょうか?
0252250
05/03/09 22:14:510253デフォルトの名無しさん
05/03/09 22:20:46そのリンク先、なんかものすごく異常なことになってないか?
0254デフォルトの名無しさん
05/03/09 22:26:29これは間違い探し?
本気で書いてるとしたらスゲェなw
0255デフォルトの名無しさん
05/03/09 22:29:140256251
05/03/09 22:29:530257デフォルトの名無しさん
05/03/09 22:33:2764bitなら常に6回か。
ビット数が増えれば増えるほど威力を発揮しそうですね。
シーケンシャルにすれば利用状況が良くなるほど
探索回数が増大するからこっちのがお得ですね。
>>248
すごっ、比較すらしないのか。英語から勉強してみます。
>>250
ごめん、ほんとはJavaでやるつもりだったのでasmは使えません。
やっぱこういうのはCプログラマかなと思ってここで聞きました。
ありがとう大変参考になりました。>ALL
0258デフォルトの名無しさん
05/03/09 22:33:31真面目に勉強するつもりなら悪いことは言わんから購読止めろ。
それを書いてる奴はC++をほとんど理解してない。
0260デフォルトの名無しさん
05/03/09 22:42:17サイトで勉強するのは全くお勧めできない。
本買え。>>218のどっちか本屋で立ち読みして選べ。
0261250
05/03/09 22:54:33n & (-n)で、一番小さい立ってるビットのみの値が帰る。
たとえば、0x42 なら 0x2
でも、どこぞの馬鹿がこれで特許とってるって話を昔聞いたw
0262247
05/03/09 23:06:42} else if (ch & 0x0C) {
は
} else {
のみで良かった・・・;
0263デフォルトの名無しさん
05/03/09 23:55:1764bitなら32要素のテーブル用意すれば早く解決できるかも。
bitNum[(n&-n)];でいいなら、シンプルでいいよね。
> 特許
マジで?そんなの無効だと思うけどw
0264デフォルトの名無しさん
05/03/09 23:56:47アホみたいに巨大なテーブルが必要じゃないか。
0265デフォルトの名無しさん
05/03/10 10:43:07正しい箇所の方が少ない。
0266デフォルトの名無しさん
05/03/10 12:46:23会社からだと「"_" が含まれる間抜けな URL です」とかいって
見られねぇ…っ!
0267デフォルトの名無しさん
05/03/10 12:54:15ttp://members.at.infoseek.co.jp/mukun_mmg/mmg/bncpp/09/145.html
0268デフォルトの名無しさん
05/03/10 16:21:590269デフォルトの名無しさん
05/03/10 16:36:300270デフォルトの名無しさん
05/03/10 17:21:37何の問題もなく、一次オブジェクトが生成されてその直後に破棄されるだけ。
決して、内部のコンストラクタを呼び直しているわけではない。
>267のソースをコンパイルして実行すると、デストラクタが4回走っていることでその様子がよく判る。
つまり、>267の記事は阿呆の書いたことを信用するな、自分の目で確かめろという教訓となっている。
0271デフォルトの名無しさん
05/03/10 17:41:12コピーコンストラクタはコンストラクタじゃないらしいし。
0272デフォルトの名無しさん
05/03/10 18:44:04なぜC++っていうと>>にこだわるのですか?
0273デフォルトの名無しさん
05/03/10 18:58:57使いたきゃつかっても良いと思うけど。
printfは第一引数と後続の引数の整合性がコンパイル時に保障されないのが
いやだという意見はあると思う。
0274デフォルトの名無しさん
05/03/10 19:06:530275デフォルトの名無しさん
05/03/10 19:20:07boost::format を使えばいいと思う。
0276デフォルトの名無しさん
05/03/10 19:23:58たいしたこと無いジャン。はぁだな,
フールプルーフじゃないよ。
0277デフォルトの名無しさん
05/03/10 19:26:14文才を感じる
0278デフォルトの名無しさん
05/03/10 19:32:38「穴」とは具体的に?
0279デフォルトの名無しさん
05/03/10 19:38:44gccだけ?VC++6.0にどうやって入れたらいいのかわかんない
0280デフォルトの名無しさん
05/03/10 19:48:330281デフォルトの名無しさん
05/03/10 19:49:470282デフォルトの名無しさん
05/03/10 19:54:43オフィシャルのGetting Startedを読んで理解できないようならプログラミングの前に英語の勉強をしなさい。
0283デフォルトの名無しさん
05/03/10 20:39:12例えば元にhogeとある所に、fooと書き込むと、
foohogeとなってくれるやり方がありましたら教えてください。
fopen("", "r+");でのだと、fooeとなりうまく行きません。
0284283
05/03/10 20:42:230285デフォルトの名無しさん
05/03/10 20:57:10無い
0286デフォルトの名無しさん
05/03/10 21:09:480288デフォルトの名無しさん
05/03/10 21:32:40ネタにしかみえねー(w
0289デフォルトの名無しさん
05/03/10 21:41:350290デフォルトの名無しさん
05/03/10 23:55:290291デフォルトの名無しさん
05/03/10 23:58:170292デフォルトの名無しさん
05/03/11 01:32:460293デフォルトの名無しさん
05/03/11 02:05:080294デフォルトの名無しさん
05/03/11 04:55:11別の意味ですごいな
0295デフォルトの名無しさん
05/03/11 16:30:580296デフォルトの名無しさん
05/03/11 16:56:35ifstream in;
string buf;
in.open("hoge.txt");
while(!in.eof()){
getline(in, buf);
cout <<++Count <<endl;
}
このようなプログラムを実行すると、3行のhoge.txtを
開いているのにカウントが、"4"と出て一行空白を読んで
きているみたいなんですが。やりかた間違ってますか?
とりあえず、
if(buf[0] == '\0')break;
というやつをgetline()の直後に書いて空白をカウントしない
ようなやりかたやったりしてます。
0297296
05/03/11 16:57:31教えて下さい.
0298デフォルトの名無しさん
05/03/11 17:32:17while( getline(in, buf) )
std::cout << ++Count << endl;
0299デフォルトの名無しさん
05/03/11 17:38:280300デフォルトの名無しさん
05/03/11 17:50:20L で long 型である事を表す。
つまり、1L で long 型の定数 1 を示す。
0301デフォルトの名無しさん
05/03/11 17:51:54thx
0302デフォルトの名無しさん
05/03/11 18:01:17fgets
0303デフォルトの名無しさん
05/03/11 18:02:460ならintで0Lならlong
なんで0.0がfloatで0.0Dがdoubleじゃないのか不思議だ
0304デフォルトの名無しさん
05/03/11 18:41:45実数型の基準がdoubleだから。
0305デフォルトの名無しさん
05/03/11 18:44:23なんでそう思うのよ?
0307デフォルトの名無しさん
05/03/11 18:48:24単精度浮動小数点数ってことは、数学的にはxでしょ。
倍精度浮動小数点数ってのは、数学的には2xでしょ。
なんで二名さまからが基準になるのか不思議でしょうがない。
0308デフォルトの名無しさん
05/03/11 19:01:07単にintと同じビット数の実数をフォーマットを単精度と呼んでいるだけ。
0309デフォルトの名無しさん
05/03/11 19:04:22VC++6.0 WinXPSp2です。
htmlを拡張子にしたファイルを量産したくて、
以下のようなコードを書いてます。
この関数がたくさん呼ばれます。
問題は、
fout.fail() でひっかかるのですが、なぜでしょうか?
errlは0になります。。
filepathは256Byte未満です。
// global
ofstream fout;
//---- 中略
void xxxxxx( char *foldername, char *set )
{
char filepath[MAX_PATH*2];
memset( filepath, 0, MAX_PATH*2 );
sprintf( filepath, "%s%s.html", foldername, set );
MakeSureDirectoryPathExists( foldername );
fout.open( filepath );
if( fout.fail() ){
unsigned long errl = GetLastError();
return;
}
fout << xxxxxxxxxx; // 略
fout.close();
}
どうかよろしくお願いいたします。
0310デフォルトの名無しさん
05/03/11 19:08:54だったらshort floatとfloatでいいのでは?
0311デフォルトの名無しさん
05/03/11 19:41:54その理論で行くと、整数系の基準は char でないと不思議だな(w
0312デフォルトの名無しさん
05/03/11 20:00:56> // global
> ofstream fout;
やい、やめろ!
0313デフォルトの名無しさん
05/03/11 20:01:33Integer = 整数
Character = 文字
不思議ではないね
0314デフォルトの名無しさん
05/03/11 20:15:55判らんが
sprintf( filepath, "%s\\%s.html", foldername, set );
か?あと
// global
やめろ
0315309
05/03/11 20:34:39なぜか、特定の文字列のファイル名がだめみたいです。。
[email protected] はokだけど、
[email protected] はだめ。
ちなみに、↑後者もエラーで返ってくるもののファイルは作成されているが、書き込みができない。
( fout << xxxが反映されていない)
sprintf,グローバル変数の使い方に問題ありますか?
代替案あればお願いいたします。
0316デフォルトの名無しさん
05/03/11 21:16:59頑張って俺規格Cを作ってください。
型名はどうでもいいけど、
標準の浮動小数点型は、
標準の整数型以上の有効桁数を持つようにしてね。
0317デフォルトの名無しさん
05/03/11 21:21:53そんなことせんでも俺デコーダを作ればいいじゃないか
0318デフォルトの名無しさん
05/03/11 21:26:31ミ ,,、,、,、,、,、,、,、、 彡
l i''" i彡
.| 」 -‐ '''ー |
,r-/ ∧ く∧ |
l ´゚ ,r "_,,>、 ゚' | プギャ━━━━m9(^Д^)━━━━!!!!
ー' ト‐=‐ァ' |
∧ | | l
/\ヽ ` `二´' /
/ ヽ. `ー--一' ノ/ヽ
/ r‐-‐-‐/⌒ヽ-─'' `、
ヽ、 |_,|_,|_,h( ̄.ノヽ>>1 ヽ
ー-ヽノ| `~`".`´ ´"⌒⌒) ヽ
ノ^ //人 入_ノ´~ ̄ )
0319309
05/03/11 21:33:10ありがとう!
シュタッ!
0320デフォルトの名無しさん
05/03/11 21:38:37これらの中でOSごとの得意精度がint,floatを襲名する
これが俺の理想
0321デフォルトの名無しさん
05/03/11 21:52:28せめてこれくらいにしろ。
DWORD hoge(const char *foldername, const char *set)
{
std::string filepath;
filepath += foldername;
filepath += set;
filepath += ".html";
MakeSureDirectoryPathExists(foldername);
std::ofstream fout(filepath.c_str());
if (fout.fail()) {
return GetLastError();
}
fout << xxxxxxxxxx; // 略
return 0;
}
0322デフォルトの名無しさん
05/03/11 21:59:080323デフォルトの名無しさん
05/03/11 21:59:300324デフォルトの名無しさん
05/03/11 21:59:530325デフォルトの名無しさん
05/03/11 22:00:300326デフォルトの名無しさん
05/03/11 22:07:020327デフォルトの名無しさん
05/03/11 22:10:50いやだ。
0328デフォルトの名無しさん
05/03/11 22:13:240329デフォルトの名無しさん
05/03/11 22:18:000330デフォルトの名無しさん
05/03/11 22:18:44>>328
※sageは禁止です。
> 1 :デフォルトの名無しさん :05/02/21 03:38:48
> エスケープシーケンスやWin32APIなどの環境依存な物でもOK。
> ただしその場合、質問者は必ず、環境を書きましょう。
> ※sageは禁止です。
0331デフォルトの名無しさん
05/03/11 22:19:09ミ ,,、,、,、,、,、,、,、、 彡
l i''" i彡
.| 」 -‐ '''ー |
,r-/ ∧ く∧ |
l ´゚ ,r "_,,>、 ゚' | プギャ━━━━m9(^Д^)━━━━!!!!
ー' ト‐=‐ァ' |
∧ | | l
/\ヽ ` `二´' /
/ ヽ. `ー--一' ノ/ヽ
/ r‐-‐-‐/⌒ヽ-─'' `、
ヽ、 |_,|_,|_,h( ̄.ノヽ>>1 ヽ
ー-ヽノ| `~`".`´ ´"⌒⌒) ヽ
ノ^ //人 入_ノ´~ ̄ )
0333デフォルトの名無しさん
05/03/11 23:03:430334デフォルトの名無しさん
05/03/11 23:05:280335デフォルトの名無しさん
05/03/12 22:59:35ちと上のプログラムを見てくださいませ。
erstyw42756857668o8o897098-p98@h
を入力したら
見つかりました。
rt756743t43f52q35s53feuiyuuyoiop
----------------------------------------------
と表示されるべきなのですが、
見つかりました。43f52q35s53feuiyuuyoiop
rt756743t43f52q35s53feuiyuuyoiop
----------------------------------------------
↑に書いたように
"見つかりました。"
の右側に変な文字列が表示されます。
原因は何なんでしょうか。
環境は
gcc version 3.3.3 (cygwin special)
winxp home(sp2)
です。
0336デフォルトの名無しさん
05/03/12 23:17:41BCCではなんともないが。
0337デフォルトの名無しさん
05/03/12 23:19:31文字列を全部シングルバイトにしてみれ
0338デフォルトの名無しさん
05/03/12 23:25:09Windowsの場合、改行コードは\r\nの2文字。
strの末尾の\nだけを\0に変えも\r(復帰)が残る。
shoukai内のprintf("0000 = %s", str);
では、行の先頭に戻るだけで、改行されない。
その後、その行を
mainのprintf("見つかりました。\n");
で上書きしている。
0339デフォルトの名無しさん
05/03/12 23:31:220340デフォルトの名無しさん
05/03/13 00:33:21if(str[len-1] == 0x0a){
str[len-1] = '\0';
if(str[len-2] == 0x0d){
str[len-2] = '\0';
}
puts("ahoaho");
}
ttp://www9.plala.or.jp/sgwr-t/c/sec17.html
こちらのページに0x0dと0x0aについての記述があり
0x0d 0x0aは>>339氏の指摘どうり
0x0aに変換されると思っていたんですが
cygwinでは違うのでしょうか。
0341デフォルトの名無しさん
05/03/13 00:45:19\rを消して無事に実行できました。
0342デフォルトの名無しさん
05/03/13 01:18:50cygwinの改行コードはLFのみだから。
0343デフォルトの名無しさん
05/03/13 02:24:23Cygwin gccでも、オープンモードを"rt"にすれば、
改行コードの変換をしてくれるようなので、
今後のことを考えるとそちらの方がいいかも。
UNIXとDOSで、テキストの定義が違うので、
気をつけないといけないね。
テキストモード ≠ CR/LF変換
0344デフォルトの名無しさん
05/03/13 02:42:16現在の long double のサイズが
VC6〜7.1=8byte
MinGW=12byte
と、定まっていないのですが、今後どちらに収束するのでしょうか?
(それとも収束しない?)
あと、VC等で 12 byteの変数を扱いたい場合
どういった方法があるのでしょうか?
ご教授お願いします
0345デフォルトの名無しさん
05/03/13 07:18:310346デフォルトの名無しさん
05/03/13 11:57:170347デフォルトの名無しさん
05/03/13 13:03:2212bitじゃないよ
0348347
05/03/13 13:03:560349デフォルトの名無しさん
05/03/13 15:26:040350デフォルトの名無しさん
05/03/13 17:41:06うちのCharは4ばいとです
0351デフォルトの名無しさん
05/03/13 18:13:23収束していくかどうかは分からないが、現状64bitとしているコンパイラの方が
感覚的に多いように思われる(未確認)。
VC++で80bit使う方法は、以下の通りでいけるらしい(未確認)。
ttp://www.microsoft.com/japan/developer/library/vccore/_crt_floating.2d.point_support.htm
実際には処理はコプロセッサに任せているだけだから実際は80bitを処理して
いる。Borlandはlong doubleに80bitを採用しているらしい(未確認)。俺が使って
いるコンパイラはデフォルトが64bitで、コンパイラスイッチで80bitへ切替可能に
なっている。
【参考URL】
ttp://support.microsoft.com/default.aspx?scid=kb;en-us;129209
ttp://www.microsoft.com/JAPAN/developer/library/vccore/_crt_long_double.htm
ttp://www.microsoft.com/JAPAN/developer/library/vclang/_pluslang_fundamental_types.htm (←コレちょっと嘘が入ってるかも)
0352デフォルトの名無しさん
05/03/13 18:28:49BCB6Update4(bcc32 5.6.4)でlong doubleが80bitなのを確認しますた。
おまけ
> 3.1.2.5 各型の浮動小数点数値の表現とセット
> Intel 8086 で使用される IEEE 浮動小数点フォーマットは,すべての C++Builder 浮動小数点型で使用されます。
> float 型は 32 ビット IEEE リアルフォーマットを使用します。
> double 型は 64 ビット IEEE リアルフォーマットを使用します。
> long double 型は 80 ビット IEEE 拡張リアルフォーマットを使用します。
0353デフォルトの名無しさん
05/03/13 19:37:5912byte(=96bit) の方なんです…(´Д⊂ヽ
16bitCPUのころの名残で80bitが残されているけど
今後は80bitは使うべきではないと書かれています
それもこれも>>345が要らない薀蓄入れたせいだ。・゚・(ノД`)・゚・。
0354デフォルトの名無しさん
05/03/13 19:46:25基本コレで、sizeof(bytes)が12にならなかったら、
コンパイラ依存の機能(#pragmaとか__attribute__とか)を足せばできるだろう。
0355351
05/03/13 19:47:03それだったら多倍長浮動小数を使う。C++ならそういうクラスを、Cなら
そういうデータ型&関数群を使うことになる。組み込みの機能でって
言うのは、CPUとの兼ね合いがあるから無理がある。
0356デフォルトの名無しさん
05/03/13 21:39:500357デフォルトの名無しさん
05/03/13 23:03:01http://www.kumei.ne.jp/c_lang/bcc/bcc_05.htm でBCCを使ったメニュー付きウインドー表示プログラム
のコンパイルを試しているのですが、
brc32 menu01.rc Release\menu01.exe
を実行すると
Error menu01.rc 4 11: Cannot open file: windows.h
というエラーが発生します。
ソースファイルを何度も書きなおしたり、このページまでのレッスンを全て始めからやり直したりしましたが
やっぱりダメでした。。
環境はWin98SEにBCC5.5です。
0358デフォルトの名無しさん
05/03/13 23:04:51http://www.borland.co.jp/cppbuilder/freecompiler/faq/bccfaq4.html
0359デフォルトの名無しさん
05/03/13 23:13:56それはBCCのreadmeにあった内容とほぼ同じだと思うんですが、
bcc32.cfg
-I"c:\Borland\Bcc55\include"
-L"c:\Borland\Bcc55\lib"
ilink32.cfg
-L"c:\Borland\Bcc55\lib"
これ以外にも何か必要ということですか?
0360デフォルトの名無しさん
05/03/13 23:17:01HWNDから取り出したBitmap bm_fと、ファイルのBitmap bmを比較したいのですが
その比較の方法が分かりません。
BOOL chkimg(bm_f, bm, x, y)と言った感じで
bm_fのx,y地点からbmが同一であるかを取得したいです。
0361デフォルトの名無しさん
05/03/13 23:23:460363デフォルトの名無しさん
05/03/13 23:32:48C++と関係ない。APIスレへ。
0364デフォルトの名無しさん
05/03/13 23:35:52strcatで書き込んだテキストが
メモ帳などで保存したファイルと異なってしまうのですが
なぜなんでしょう?
異なってる点は、strcatで書き込んだ最後は 000000000
メモ帳などで上書きすると 202020202020202020となるんです
メモ帳などで保存したと同じようにするにはどうすれば良いのでしょうか?
0365デフォルトの名無しさん
05/03/13 23:36:46ありがとうございます。
でも、それは
ilink32.cfg
-L"c:\Borland\Bcc55\lib"
-I"c:\Borland\Bcc55\include"
としろという意味ですか? それともコンパイルするときに
-ic:\Borland\Bcc55\include
などとやればいいのですか?
試行錯誤すればいいのでしょううが、下手なことをしてパソコンを壊すと大変なので・・
何度もすみません。
0366デフォルトの名無しさん
05/03/13 23:37:56>>1にWinAPIもOKと書いてありますが?
マルチになりますが、そちらにも書かせていただきます。
0367デフォルトの名無しさん
05/03/13 23:39:210368デフォルトの名無しさん
05/03/13 23:43:25brc32 -h
0369デフォルトの名無しさん
05/03/14 00:14:29そうとうりです
どうしてもおかしくなってしまうので
文字列を合わそうとしましたが、それもうまく行きません
A.txt B.txt を読み込んで
A と Bの間にstrcatで書き込んでるんです
それをC.txtに出力してます
追加する文字数は分かるので
ファイル内の文字数は、wSize = (size_t )filelength(fileno(fp));では
ダメなのでしょうか?
0370デフォルトの名無しさん
05/03/14 00:23:07brc32 -ic:\borland\bcc55\Include menu01.rc Release\menu01.exe
とやるくらいしか思いつきません…
諦める前にもう少し検索してみます。
どうもでした。
0371デフォルトの名無しさん
05/03/14 00:34:28そもそも windows.h は必ずしもインクルードしなくてもいいぞ。
windows.h を外してリソースのコンパイルが通るならばそれでOK。
0372369
05/03/14 00:41:49strlen()で文字数を取得したら解決しました
0373デフォルトの名無しさん
05/03/14 00:52:53>fread()した後strlen()で
根本的に理解していない悪寒。
0374デフォルトの名無しさん
05/03/14 01:07:05かなりヤバくない?
fread()はそのままでは取得バッファの最後にヌルが付加されないので、
ヌル終端文字列として扱いたいなら、最低限、戻り値の位置に自分でヌルをセットする必要がある。
それでも実際には不完全だがセキュリティ上の問題は回避できる。
0375デフォルトの名無しさん
05/03/14 01:11:54「文字列を合わす」「うまく行かない」「AとBの間」「間にstrcatで書き込み」「それ」
「追加する文字数」「ので」「ファイル内の文字数」
以上、さっぱりわからん。
書き込む前に、自分以外にも伝わる文章かどうか読み直せ。
0376デフォルトの名無しさん
05/03/14 02:04:29お前には聞いてないからレスしなくていいよ
0377デフォルトの名無しさん
05/03/14 02:24:02本人に日本語で説明させるより、
ソース晒させた方がはっきりするんだがね。
0378デフォルトの名無しさん
05/03/14 02:37:29で十分
0379デフォルトの名無しさん
05/03/14 03:26:110380デフォルトの名無しさん
05/03/14 03:28:35綺麗なコードが書けるお前に彼女がいないのは何故だ
0381デフォルトの名無しさん
05/03/14 03:30:26的を射た表現だな。my語録として貰いますよ。
0382デフォルトの名無しさん
05/03/14 03:39:17CPUに説明すんのはコンパイラで十分だろ
それともアセンブラ信者ですかw?
0383デフォルトの名無しさん
05/03/14 03:46:26人に対して上手く説明出来ないのにコンパイラに対して上手く説明出来る訳ないだろ
0384デフォルトの名無しさん
05/03/14 04:01:170385デフォルトの名無しさん
05/03/14 07:57:120386デフォルトの名無しさん
05/03/14 08:23:200387デフォルトの名無しさん
05/03/14 10:43:08食い違うなんてザラ。そもそもまともなコードが書けてないことも多々ある。
「うまく行きません」って質問は、まずソースを晒させる。これが鉄則。
0388デフォルトの名無しさん
05/03/14 11:11:16日本語の初心者は帰ってくれ。
0389デフォルトの名無しさん
05/03/14 13:13:47回答者の中にもね。
0390デフォルトの名無しさん
05/03/14 18:01:28void WINAPI foo(Hoge);
というのがあった場合、Hogeのサイズは言語的にどう決まるのでしょうか?
というのは、fooはDLLからエクスポートする関数なのですが
EXE側の製作環境によってHogeのサイズが変わると困るのです。
また、列挙子が増えた場合にサイズが変わっても困ります。
DirectXでは
***_FORCE_DWORD = 0x7fffffff
という使わない列挙子を作って強制的に4byteにしてるようですが
これで4byteになるという保障は言語的にあるのでしょうか?
0391390
05/03/14 18:02:560392デフォルトの名無しさん
05/03/14 18:38:430393デフォルトの名無しさん
05/03/14 19:58:52C++Builderだとコンパイルオプションで「enumをint型として扱う」ってのがあるんだがな
他のコンパイラだとどうだろう
0394デフォルトの名無しさん
05/03/14 20:11:51>>365
>>368
>>370
--------
>>378
>>379
>>380
>>382
>>383
>>384
0395379
05/03/14 22:32:49身に沁みます。
0396デフォルトの名無しさん
05/03/14 23:01:09Windows上のコンパイラは関数呼び出しのとき、みんな4バイト単位で引数を渡している。
つまりchar(1Byte)もshort(2Byte)もint型(4Byte)の引数と全く同じように渡される。
だからあまり気にする必要もないと思う。
0397デフォルトの名無しさん
05/03/14 23:10:240398デフォルトの名無しさん
05/03/15 00:02:17質問者の質ってか、質問者が最初から必要な情報を提示してるかどうかだな。
情報を小出しにされると話がグダグダするし頓珍漢な回答者も出てくるし
煽りも入るしで良いこと無い。
0399デフォルトの名無しさん
05/03/15 00:03:08enumを宣言した時点で無条件にsizeof(Hoge)==sizeof(int)ということはないみたい。
ISO/IEC 14882:1998 7.2 Enumeration declarations
-5
The underlying type of an enumeration is an integral type that can represent all
the enumerator values defined in the enumeration. It is implementation-defined which
integral type is used as the underlying type for an enumeration except that the
underlying type shall not be larger than int unless the value of an enumerator cannot
fit in an int or unsigned int. If the enumerator-list is empty, the underlying type
is as if the enumeration had a single enumerator with value 0. The value of sizeof()
applied to an enumeration type, an object of enumeration type, or an enumerator, is
the value of sizeof() applied to the underlying type.
-6
For an enumeration where emin is the smallest enumerator and emax is the largest, the
values of the enumeration are the values of the underlying type in the range bmin to
bmax, where bmin and bmax are, respectively, the smallest and largest values of the
smallest bitfield that can store emin and emax. It is possible to define an
enumeration that has values not defined by any of its enumerators.
0400デフォルトの名無しさん
05/03/15 00:06:040401デフォルトの名無しさん
05/03/15 00:08:420402デフォルトの名無しさん
05/03/15 00:17:49クソつまんね(゚�听)
0403デフォルトの名無しさん
05/03/15 00:18:220404デフォルトの名無しさん
05/03/15 00:48:44まあ、まとめる能力のない人間だからしょうがないでしょ
許してあげて
0405デフォルトの名無しさん
05/03/15 02:00:43なるべくローカル変数で宣言した方がいいんですが?
0406デフォルトの名無しさん
05/03/15 02:20:360407マイク ◆yrBrqfF1Ew
05/03/15 07:09:32わざわざグローバルなんて使うのはアホな2chネラくらいなものだ。
0408デフォルトの名無しさん
05/03/15 11:39:08質問
http://www.asahi-net.or.jp/~yf8k-kbys/newcpp6.html
の一番最後
>のように書くと、コンパイラが警告を出すかもしれません。たとえば、Borland C++ 5.6では、コンストラクタに関して
>「値でクラスを渡す引数を持つ関数はインライン展開されない」
>という警告が出ます。クラス定義内のコンストラクタの定義が
> Neko(string s){
> name = s;
> }
>でも同じです。これは、「このコンストラクタはインラインにできない」という意味です。
これは、どういう意味なのでしょうか?
どうして警告がでるのかわかりません。
0409デフォルトの名無しさん
05/03/15 11:49:19class A {
public:
static int a;
}
と書くのと、
class A {
static int a;
public:
int GetA(){ return a; }
}
と書くのは、なるべく下の方法で書いた方がいいんでしょうか?
0410409
05/03/15 11:50:410411デフォルトの名無しさん
05/03/15 11:53:56そりゃそうだ
あと GetA は inline にしちゃいかん
0412デフォルトの名無しさん
05/03/15 11:56:35一般的なプログラマが把握できる規模というのは限られており、グローバル変数を使ったほうが良い、
という状況に出会うのはとても難しいのです。
グローバル変数を使うと、プログラムのどこで参照したり書き換えたりしているか(プログラマが忘れて
しまって)把握できなくなり、バグを探すのにプログラム全体を見直さなければならなくなるからです。
また、貧乏性の人が同じグローバル変数を複数の箇所で別の用途に用いた場合にも、上記の理由で
問題が発生することがあります。
プログラムは極力「狭い視野」で見ても大丈夫なように作るべきなのです。
0413デフォルトの名無しさん
05/03/15 12:01:20なぜinlineにしてはいけないのですか?
0416デフォルトの名無しさん
05/03/15 12:09:300417デフォルトの名無しさん
05/03/15 12:11:36そっちのほうがゾクゾクしますけど。
0418デフォルトの名無しさん
05/03/15 12:12:460419デフォルトの名無しさん
05/03/15 12:15:100420デフォルトの名無しさん
05/03/15 12:30:36私の正面で見えなくなります。
0421デフォルトの名無しさん
05/03/15 12:37:56前にもこの話題があったけど、面倒くさいんで
C++ FAQ でも読んでくれ
0422デフォルトの名無しさん
05/03/15 13:01:190423デフォルトの名無しさん
05/03/15 16:11:10Linux で Cを作っているのですが、よきデバッガありませんか?
gdb使おうかと思ったのですが、man 見てもさっぱりです…
よきデバッガもしくは gdb の基本的な使い方を教えてください。
ちなみにTeraTermで繋がっているので、コマンドライン上で叩けるやつがいいです。
漏れは時代遅れなのかな…
0424デフォルトの名無しさん
05/03/15 16:13:36man 見てダメ google なり yahoo なりで検索すればいいだろ
0425デフォルトの名無しさん
05/03/15 16:25:040426デフォルトの名無しさん
05/03/15 16:27:37コンソール処理なんて簡単なんだから、
そろそろXP時代のUIにあったコンソールアプリが出来てもおかしくないんだが。
俺が作ろうかな?
0427デフォルトの名無しさん
05/03/15 16:31:53是非頑張ってくれ。
まあ普通にコピペとかできるし、必要な機能揃ってるからじゃないのかね>TeraTerm後継が出てこない
0428デフォルトの名無しさん
05/03/15 16:39:49それは別にすごくないが、Cでプログラミングしているだけだと思われ。
0429デフォルトの名無しさん
05/03/15 16:40:240430デフォルトの名無しさん
05/03/15 16:43:12「C/C++ の処理系を作る」のは大したことだと思う。
0431デフォルトの名無しさん
05/03/15 16:50:360432デフォルトの名無しさん
05/03/15 16:59:10はぁ?
探したけど見つからないからここに来たんだYO!
だめもとでググったらあっさり出てきた。
前はどんなキーワードで探したんだ、俺…
∧||∧
( ⌒ ヽ ごめん、ありがとう。これで許して…
∪ c ノ
∪∪
0433デフォルトの名無しさん
05/03/15 17:01:06そんな香具師がこのスレで質問していることの方が驚きだYO
0434デフォルトの名無しさん
05/03/15 18:05:29オブジェクト指向は建前で。
0435デフォルトの名無しさん
05/03/15 18:41:27そう思ってるのは低脳なお前だけだよ。
0436434
05/03/15 18:43:210437デフォルトの名無しさん
05/03/15 19:34:200438デフォルトの名無しさん
05/03/15 20:11:08JavaやRubyを見習って欲しい
0439デフォルトの名無しさん
05/03/15 20:12:170440デフォルトの名無しさん
05/03/15 20:13:110441デフォルトの名無しさん
05/03/15 20:23:29この訴えは毎日続けていくつもりです
0442デフォルトの名無しさん
05/03/15 20:24:540443デフォルトの名無しさん
05/03/15 20:31:31Rubyは既にNGワードに入ってますから!残念!!
0444デフォルトの名無しさん
05/03/15 20:32:08ALGOL 調の syntax なんて、ダサくて可読性が悪すぎる。
0445デフォルトの名無しさん
05/03/15 20:38:280446デフォルトの名無しさん
05/03/15 20:40:42C++で5000行だったソースが1500行で書けた。
0447デフォルトの名無しさん
05/03/15 20:46:380448デフォルトの名無しさん
05/03/15 20:50:050449デフォルトの名無しさん
05/03/15 20:50:38Effective C++ だったか、More Effective C++ だったか、
C++ Faq だったか、Efficient C++ だったか、Exceptional C++
にのどれかに詳しく書かれてたんで書店で見て見るべし。
簡潔に言うとすこぶる良くないことになってると思われ
0450デフォルトの名無しさん
05/03/15 20:51:120451デフォルトの名無しさん
05/03/15 20:52:400452デフォルトの名無しさん
05/03/15 20:53:170453デフォルトの名無しさん
05/03/15 20:59:31クラスは大概グローバルですね。
インスタンスがグローバルだとちょっとアレですが。
0454デフォルトの名無しさん
05/03/15 21:00:460456デフォルトの名無しさん
05/03/16 01:22:33前に同じ話題が出たときは、
規格の意図と「C++ FAQ」(本)の解釈にズレがあるのだろう
という説で終わっていますよ。
@Ver.12
http://pc5.2ch.net/test/read.cgi/tech/1101100031/400-401
0457デフォルトの名無しさん
05/03/16 01:47:00てな感じでconstを付けた場合の動作を教えていただけませんか。
何故かconst char* foo();の場合と似たような動きになってる気がするんですが。
0458デフォルトの名無しさん
05/03/16 01:50:09char * const a;
const char a:
0459デフォルトの名無しさん
05/03/16 02:03:16?
自分も最初は普通の変数の場合と同じかと思ったんですが
どうも違うような気がするのですが。。
const char* foo(); の場合は普通の変数と同じなのですが、
char* const foo() ;の場合に
char *bar = foo(); とconst無し変数に代入すると、
このbarはconst char* bar;のような変数と同様の動きをしているような。。
0460デフォルトの名無しさん
05/03/16 02:17:04「ような気がする」でこっちに何か伝わってくるとでも思ってるのか?
期待した結果と実際の結果を書いてもらわなきゃわからん。
0461デフォルトの名無しさん
05/03/16 02:46:59の違いがわかれば、プロのプログラマだな
0462デフォルトの名無しさん
05/03/16 03:01:17const char* hoge1;
char const *hoge2;
char* const hoge3;
hoge1とhoge2は同じ。constなcharへの非constポインタ。
hoge3は非constなcharへのconstなポインタ。
関数の場合:
const char* foo1();
char const *foo2();
char* const foo3();
foo1, foo2はともにconstなcharへのポインタを返す。
foo3はconst修飾が意味をなさない。返すのは非constなcharへのポインタ。
0463デフォルトの名無しさん
05/03/16 03:08:35> foo3はconst修飾が意味をなさない。
そんな事は無い。
っていうか変数の型でも関数の戻り値型でも const の効果は同じ。
0464デフォルトの名無しさん
05/03/16 03:14:48んじゃ、foo3のconstは何を修飾してるの?
0465デフォルトの名無しさん
05/03/16 03:15:38・・、あー違うでしょ、それ。
char* const 変数戻り値を char*変数に代入した時点で、
const の存在意義が消滅してるのは事実。
コンパイルエラーではない。
もし、const属性を維持したいのなら、
char* const ret = foo3();
として戻り値を受ける変数にconst属性を与える必要がある。
0466デフォルトの名無しさん
05/03/16 03:22:59という関数に意味があるかってのと同じことだな。
一時変数に過ぎない戻り値をconstにするのは無意味っちゃあ無意味。
0467デフォルトの名無しさん
05/03/16 07:44:13現在はcontinueしたいforステートメントの最後にnext: NULL;として、
goto next;で飛ばすという変な形になっています。
IDEはVC++6.0です。
0468デフォルトの名無しさん
05/03/16 09:18:07設計が悪い。
0469463
05/03/16 10:28:23↓のソースは char*& を foo3() の戻り値で初期化しようとしてエラーになる。
char* foo3() { return 0; }
template<typename T> T& ref(T& r) { return r; }
int main()
{
ref(foo3());
return 0;
}
このソースで char* foo3() を char* const foo3() にすると、エラーは出なくなる。
この const は確かに foo3() の戻り値を修辞しているのであって、「意味をなさない」とは言い切れない。
char* とかの組み込み型だと、違いの現れる状況が想定しにくいけど、
これが std::string だったりすると foo3().append("xxx") が通るか通らないかの違いにもなる。
0470デフォルトの名無しさん
05/03/16 11:15:38if( エラー発生)
{
//エラー処理
・・・
goto END;
}
・・・
for(i=0;i<n;i++)
{
if( エラー発生)
{
//エラー処理
・・・
goto END;
}
}
・・・
END:
//共通終了処理
・・・
return;
とか良くやるんですけど、これってDQNなのですか?
私としては単純でわかりやすいと思っていたのですが。。。
0472デフォルトの名無しさん
05/03/16 11:31:03C++なら例外を使おう。でなければこれではだめかい?
void ending(){/*共通終了処理...*/}
void error(){
/*エラー処理...*/
return ending();
}
void func(){
if(/*エラー発生*/) return error();
// ...
for(i=0;i<n;i++)
if(/*エラー発生*/) return error();
// ...
return ending();
}
0473デフォルトの名無しさん
05/03/16 11:33:15ふたつの「エラー処理」に共通部分があるのなら、DQNと言われてもしょうがない。
ここで goto 使うメリットは共通エラー(終了)処理をまとめられることだから、
やるんなら徹底的にやらないと、 goto 自体を嫌う人に対して説得力が無い。
もし C++ 使ってるんなら、デストラクタ使って RAII に従えばこんな心配も無い。
0474デフォルトの名無しさん
05/03/16 12:05:590476デフォルトの名無しさん
05/03/16 12:46:28説得力が薄い。
0477デフォルトの名無しさん
05/03/16 12:51:09質問者と別者だけど、その解教えてほすぃ
せめて、どの本に書かれてあったか絞ってちょーらい(ノд`)
0478デフォルトの名無しさん
05/03/16 14:57:140479デフォルトの名無しさん
05/03/16 15:02:51for (i=0; i<max; i++) {
for (x=0: x<width; x++) {
for (y=0: y<height; y++) {
if (list[i][x][y]!=hoge) goto next;
}
}
next:;
}
こういうのが設計が汚いとは思わんけど
0480デフォルトの名無しさん
05/03/16 15:12:59汚いと思う。
多重ループにおける goto の使用は、とっくに議論され尽くしてる。
そういうのは最高に頭の悪い発言をするスレとかでやってくれ。
0481デフォルトの名無しさん
05/03/16 15:14:120482デフォルトの名無しさん
05/03/16 15:14:270483デフォルトの名無しさん
05/03/16 15:15:02ローカル変数はどう扱うのですか?
0484デフォルトの名無しさん
05/03/16 15:24:49古典だけどくぬーすの本読んだことある?
0485デフォルトの名無しさん
05/03/16 15:26:280486デフォルトの名無しさん
05/03/16 15:27:440487デフォルトの名無しさん
05/03/16 15:30:57今さら Knuth はねーだろ…。
>>486
goto と例外は違うよ。
0488デフォルトの名無しさん
05/03/16 15:32:42loop1: for(..
というのをcontinueやbreakで使えるのは
>>479が汚くないという証拠だろ
0489デフォルトの名無しさん
05/03/16 15:33:47ふたつの「エラー処理」に共通部分があっても、
共通終了処理の手前でやる必要があれば別にいい。
冗長になるなら、それ様の関数一個作って一行で済ませばいいんだし。
極端にコーディング効率を気にしすぎると、
ソースいじってるだけで時間が過ぎてっちゃうよ。
0490デフォルトの名無しさん
05/03/16 15:34:51「Java にあるから汚なくない」んだ?ふーん(´σД`)
0491デフォルトの名無しさん
05/03/16 15:35:430492デフォルトの名無しさん
05/03/16 15:36:130493デフォルトの名無しさん
05/03/16 15:36:27そうだよ。何言ってるの?池沼?
0494デフォルトの名無しさん
05/03/16 15:37:14gotoも捨てたもんじゃないよ。
0495デフォルトの名無しさん
05/03/16 15:38:23m9(^Д^)プギャー
0496デフォルトの名無しさん
05/03/16 15:38:580497デフォルトの名無しさん
05/03/16 15:39:31他の関数に飛んでったりしないんだから、
使い方私大では例外よりシンプルにわかりやすくできる。
とても限った使い方に限定すればだけどね。
0498デフォルトの名無しさん
05/03/16 15:40:000499デフォルトの名無しさん
05/03/16 15:40:45ソースコード、きれいにかけます?
0500デフォルトの名無しさん
05/03/16 15:42:17同じこと実現する意味では同じなんだよな。
実はアセンブラコードレベルでは似通ってたりして?
0501デフォルトの名無しさん
05/03/16 15:42:33スパゲッティコードだからgotoが必要だと主張するかと思えば、
スパゲッティコードはよくないから直すと今度はgotoの存在価値も低下する。
goto文とスパゲッティコードがセットになってることが多いので、
憎悪の対象がgoto文になってしまうことが多いけど、
実際には悪いのはスパゲッティコードであって、決してgotoではない。
不当に犯人扱いされるgoto文。
しかし、goto文は、犯人を擁護・育成するかような立場にある。
0502デフォルトの名無しさん
05/03/16 15:42:46エラーで関数の終了なので綺麗だよ
0503デフォルトの名無しさん
05/03/16 15:43:19安心した。これからもどんどん使おうっと。
0504デフォルトの名無しさん
05/03/16 15:43:37try
raise Hage
with
Hage -> print_string "sine";;
0505デフォルトの名無しさん
05/03/16 15:44:21チト違う、例外はcatchされるまでどこまでも飛んでいく
0506デフォルトの名無しさん
05/03/16 15:44:480507デフォルトの名無しさん
05/03/16 15:45:18goto finally;
catch2:
finally:
今とあまり変わらない?
0508デフォルトの名無しさん
05/03/16 15:45:31goto使ってキタネーとか感じるのは、
そもそもコーディングからやり直しなさいってことでしょ?
もっときちんとわかりやすく簡潔にモジュール分割しなさいと。
0509デフォルトの名無しさん
05/03/16 15:46:440510デフォルトの名無しさん
05/03/16 15:46:47>>501
矛盾してないよ。
スパゲティコードであるということと、goto を使ってるということは別問題。
0511デフォルトの名無しさん
05/03/16 15:47:270512デフォルトの名無しさん
05/03/16 15:48:21「goto を使わなければいけない」という時点で、すでに冗長な関数。
「goto を使っても尚汚ない」なんてのは論外。
0513デフォルトの名無しさん
05/03/16 15:48:320514デフォルトの名無しさん
05/03/16 15:48:510515デフォルトの名無しさん
05/03/16 15:50:23初心者さんですか?ありますよ。
0516デフォルトの名無しさん
05/03/16 15:50:34そしてcaseラベルにgotoできる。 わけわからん。
0517デフォルトの名無しさん
05/03/16 15:51:150518デフォルトの名無しさん
05/03/16 15:51:23そういうルールを設けないといけない時点で、何か間違ってると思わない?
0519デフォルトの名無しさん
05/03/16 15:52:34そういう人の意見って聞きたいな。
0520デフォルトの名無しさん
05/03/16 15:53:21という人がコーディングルールには人一倍うるさいんだよね。
0521デフォルトの名無しさん
05/03/16 15:53:59try-catchが?
0522デフォルトの名無しさん
05/03/16 15:54:47DO 10 I=1,10
5 HOGE = HOGE * I
・・・
10 CONTINUE
見たいな事は良くない
0523デフォルトの名無しさん
05/03/16 15:54:50お前らよりもはるかに賢い人達が考えたことに従っていればいいんだ。
0524デフォルトの名無しさん
05/03/16 15:54:56ルールなんだから間違ってないでしょ。
あなたは、何のルールも持たないでプログラム組んでます?
作る人の中できちんと守るからこそルールって言うんです。
0525デフォルトの名無しさん
05/03/16 15:55:31例外とかラベル付きステートメントがあるんだろ
それらが無い言語仕様で同様の処理するなってアホだろ
0526デフォルトの名無しさん
05/03/16 15:56:20ルールもいいんじゃない?
デメリットばかり叩いてちゃ、この世に使える言語なんてひとつも無い。
0527デフォルトの名無しさん
05/03/16 15:56:33俺、未だに使ったことないけど。
0528デフォルトの名無しさん
05/03/16 15:56:340529デフォルトの名無しさん
05/03/16 15:57:20要は書く人の問題。
0530デフォルトの名無しさん
05/03/16 15:58:06少なくともgotoの嵐よりはましになる傾向がある。
0531デフォルトの名無しさん
05/03/16 15:58:29だからgoto使えば必ずスパゲッティにならないんだって。
そう思うのは、あなたの技量がその程度だからそう感じるだけ。
0532デフォルトの名無しさん
05/03/16 15:59:07個人の技量の話じゃないんだよ。
0533デフォルトの名無しさん
05/03/16 15:59:47文盲?
0534デフォルトの名無しさん
05/03/16 16:00:23お前も本質とはまったく関係の無いつまらんレス付けるな。
0535デフォルトの名無しさん
05/03/16 16:01:12それも人による、スキルによる。
力ない人はすぐに言語のせいにする。
0536デフォルトの名無しさん
05/03/16 16:01:33日本語理解しろって。
例外やラベル付きステートメントは
用途が特定されたgotoの置き換えだろ。
0537デフォルトの名無しさん
05/03/16 16:02:220538デフォルトの名無しさん
05/03/16 16:02:41経験的な傾向だよ。それに言語機能が成果に影響するのは自明だろう。
0539デフォルトの名無しさん
05/03/16 16:02:520540デフォルトの名無しさん
05/03/16 16:03:47例外不思議な奴はいないだろ
例外処理できない言語で等価の処理をするなって奴がいるだけ
0541デフォルトの名無しさん
05/03/16 16:04:06池沼?
あと sage ろよ、馬鹿。
0542デフォルトの名無しさん
05/03/16 16:04:100543デフォルトの名無しさん
05/03/16 16:04:47そもそも初心者同士で不毛で下等な議論は無意味。
おとなしくgoto使わないようにしとけ。偉い人はそういうだろ。
0544デフォルトの名無しさん
05/03/16 16:04:56なぜにそんなに例外に固執する?
別に例外が悪いと言ってるわけではないのだが、
こういう議論になると、ごく一部の例外支持派が、
徹底してgotoを叩くのはなぜ?
0545デフォルトの名無しさん
05/03/16 16:05:17もう釣りはいいよ。
0546デフォルトの名無しさん
05/03/16 16:05:48俺はむしろgoto支持の人にもっと説得力のある例を示してほしい。
毎回この手のframeになる度に聞くんだけど、
「あぁ、こりゃGOTO使った方がイイですね」って例を見た事がない。
もちろん、try-catchのないC言語でもね。
0547デフォルトの名無しさん
05/03/16 16:06:04今のフジテレビみたいだ。
若い者は黙ってろ、みたいなw
0548デフォルトの名無しさん
05/03/16 16:06:330549デフォルトの名無しさん
05/03/16 16:06:45ユーザーインターフェースなら例外だな
0550デフォルトの名無しさん
05/03/16 16:06:46gotoを使った完結なコードというものを見た事がない。
0551デフォルトの名無しさん
05/03/16 16:07:36gotoで十分ならgotoを使う。
無理に例外使わないってだけ。
0552デフォルトの名無しさん
05/03/16 16:08:26そりゃあんたが欠けないだけでIWUH('X$YJ'$#S)I"$#&J()#
0553デフォルトの名無しさん
05/03/16 16:09:09gotoは自由にいろいろな処理に飛ぶことができるが、半面、追跡が難しくなる。
例を挙げるが、googleなどで希望のWEBページを検索するとき、一般的な一つの単語だけで検索にかけると
数万ページという膨大なページがヒットしてしまい、そこから希望のページを探すのは極めて困難になる。
そこで、我々は複数の単語などを検索にかけることで前以上の制約を与え、絞りこむことをする。
時には制約を与えて自由を奪うことも大切なんだよ。
0554546
05/03/16 16:09:53俺は別に例外に拘ってるわけじゃないんだけど、
別関数にしたり、データ構造を練れば(というか、まともに作ってれば)gotoを使う必要がないと思う。
無理にgotoを使わないってだけ。使う必要性が感じられない。
0555デフォルトの名無しさん
05/03/16 16:11:01>>550
> gotoを使った完結なコードというものを見た事がない。
日本語読めよ。
0556デフォルトの名無しさん
05/03/16 16:11:21飛ばなきゃイイだけの話。
無理やり悪いところだけ拾い出して叩くのはどうかな。
それにgotoで飛ぶ場所ってどこでもいけると思ってる時点でダメダメさんです。
関数は一画面内に納まるくらいで書くようにしたほうがいいですよ。
0557デフォルトの名無しさん
05/03/16 16:11:39正しく使えないガッコのセンセあたりは原理主義的に否定しまくります。
SEやゲームプログラマはそんなこというとハァ?と言ってくれます。
0558デフォルトの名無しさん
05/03/16 16:11:44http://fw8.bookpark.ne.jp/cm/ipsj/search_test.asp?flag=6&keyword=IPSJ-JNL4503013&mode=PRT
0559デフォルトの名無しさん
05/03/16 16:13:02小遣い稼ぎのにおいがするからいかない。
0560デフォルトの名無しさん
05/03/16 16:13:36> ゲームプログラマ
m9(^Д^)プギャー
0561デフォルトの名無しさん
05/03/16 16:14:070562デフォルトの名無しさん
05/03/16 16:14:11一関数に何行使ってるんだ?と聞いてみたい。
例えば40〜50行程度の関数にgoto分を使ってスパゲッティにするのって、
意図して書くほうがずっと疲れると思うのだが。
0563デフォルトの名無しさん
05/03/16 16:16:01そいつら以上にコード突き詰めるサラリーマンプログラマがいたら教えて欲しい
0564デフォルトの名無しさん
05/03/16 16:16:23それなりのプロなんだから、goto使っても
わかりやすくかける人たちばかりでしょ?ここの中の人は。
0565デフォルトの名無しさん
05/03/16 16:16:44ttp://www.google.co.jp/search?hl=ja&q=jamp&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
0566デフォルトの名無しさん
05/03/16 16:18:32関数は基本的に2〜3行。
OCamlのような関数型言語なら本質的にgotoを必要としない。
しかも代入文や副作用が少ないのでC/C++と比べて、コンパイルに成功すれば極めてバグが少ないプログラムになる。
ちなみに関数型言語なら関数をかなり細かく分割しても最適化されて、関数のオーバヘッドはほとんどない。
0567デフォルトの名無しさん
05/03/16 16:18:48多分例外支持の人はスパゲッティがかけるんでしょう。
それを自慢したら先輩や上司に大目玉食らって、
それ以来、goto大嫌い人間になったのかと。。。
0568デフォルトの名無しさん
05/03/16 16:19:06コードを突き詰めるのと読みやすいコードを書くのは違うスキル.
>>564
gotoを使っても書ける局面とgotoを使うべき局面は違う.
俺が知りたいのはgotoを使うべき局面. そんな局面, あったら教えて欲しい.
0569デフォルトの名無しさん
05/03/16 16:19:11プロだって?
どうせ業務アプリ作成しているような素人だろ。
0570デフォルトの名無しさん
05/03/16 16:19:58もう出てるだろうに、文盲か?
0571デフォルトの名無しさん
05/03/16 16:20:22???関数名とreturn文で終わり???
0572デフォルトの名無しさん
05/03/16 16:20:47> 1. 事実に対して仮定を持ち出す
0573デフォルトの名無しさん
05/03/16 16:20:530574デフォルトの名無しさん
05/03/16 16:21:33がんばれば一行でかけるけど、汚いので。
0575デフォルトの名無しさん
05/03/16 16:21:34提示された例はgotoの必然性を語るには説得力にかけるよ.
0576デフォルトの名無しさん
05/03/16 16:21:350577デフォルトの名無しさん
05/03/16 16:22:11xyzzyってLispスクリプトだっけかが使えるよな
0578デフォルトの名無しさん
05/03/16 16:22:49ワラタ
コンパイラが悲鳴あげそうだw
0579デフォルトの名無しさん
05/03/16 16:23:04お前の理解力不足を説得力不足に置き換えるなって
0580デフォルトの名無しさん
05/03/16 16:23:16逆。gotoを使わないで済むなら使わない。
0581デフォルトの名無しさん
05/03/16 16:23:45お前らだってmainに再帰かけてどこまで出来るかで遊んだだろ?
0582デフォルトの名無しさん
05/03/16 16:23:57簡単に処理できるのにそんなに必然性が重要とは思えん。
0583デフォルトの名無しさん
05/03/16 16:24:43ここのスレ住人に関数型言語布教するのはムダ
0584デフォルトの名無しさん
05/03/16 16:25:010585デフォルトの名無しさん
05/03/16 16:25:10Cで再帰なんてとんでもない!
0586デフォルトの名無しさん
05/03/16 16:25:39どっちだっていいだろ。
0587デフォルトの名無しさん
05/03/16 16:26:01お前の説明力不足を理解力不足に置き換えるなって.
>>582
そもそもgotoを使って処理する必要がないのに, gotoが必要だとは思えん.
>>586
m9(^Д^)プギャー
0588デフォルトの名無しさん
05/03/16 16:26:490589デフォルトの名無しさん
05/03/16 16:27:17一部gotoを食わず嫌いな人がいるみたい。
使ったら楽チンだよ。使ってみなよ。
0590デフォルトの名無しさん
05/03/16 16:27:52例外やラベル付きステートメントの無いC言語ではどのように書けばよいのですか?
教えてください。
0591デフォルトの名無しさん
05/03/16 16:28:21gotoを例外に置き換えても、そのまま成り立つねw
0592デフォルトの名無しさん
05/03/16 16:28:340593デフォルトの名無しさん
05/03/16 16:28:51ほんのちょっぴり興味もった。
xyzzy使う機会があったら勉強してみる。
0594デフォルトの名無しさん
05/03/16 16:29:26スタックサイズのパラメータを1Gバイトぐらいにしないとなw
0595デフォルトの名無しさん
05/03/16 16:29:44とりあえず>>479をgotoなしに置き換えて。
0596デフォルトの名無しさん
05/03/16 16:30:21gotoを例外に置き換えても、そのまま成り立つねw
0597デフォルトの名無しさん
05/03/16 16:31:220598デフォルトの名無しさん
05/03/16 16:32:01gotoを例外に置き換えられるから、ってだけじゃ、
それこそ説得力無いと思うが。
0599デフォルトの名無しさん
05/03/16 16:32:30例外で脱出
0600デフォルトの名無しさん
05/03/16 16:32:390601デフォルトの名無しさん
05/03/16 16:33:57無理に例外使うことも無いよね。
両方とも同レベル。
0602デフォルトの名無しさん
05/03/16 16:34:14どこに飛ぶか知るのにルーチン全体を見直さないといけない。
これって面倒だよね?(エディタの検索で一発か…)
0603デフォルトの名無しさん
05/03/16 16:35:000604デフォルトの名無しさん
05/03/16 16:35:09だから私はgoto使います。以上!!
0605デフォルトの名無しさん
05/03/16 16:35:35非国民!!!!
0606デフォルトの名無しさん
05/03/16 16:35:46関数の中でしか飛べないんだけど
0607デフォルトの名無しさん
05/03/16 16:36:30関数の中身はルーチンです。
0608デフォルトの名無しさん
05/03/16 16:36:36あなたも一関数を何百行にも渡って書いちゃう人ですね。
一関数で何度もスクロールしないと見渡せない関数は
書かないほうがいいですよ。
0609デフォルトの名無しさん
05/03/16 16:38:31って構図が鮮明になってきたわけで。
これじゃあgoto使うの、俺だってやだよw
0610デフォルトの名無しさん
05/03/16 16:38:400611デフォルトの名無しさん
05/03/16 16:39:37まさかループ制御もgoto使ってると信じてるの?
0612デフォルトの名無しさん
05/03/16 16:40:23妄想狂?
0613デフォルトの名無しさん
05/03/16 16:41:37でも、gotoを実際に使ってる人は、実に上手に使ってる。
別に必然性とかそんな隔たった話じゃなくてね。
例外使ったっていいけど、それがgotoはダメという理由にはなりえないよ。
0614デフォルトの名無しさん
05/03/16 16:42:58大学を出たてでプログラムがまともに組めない新入社員がどんなプログラムを書くか。
goto禁止にしないととんでもないことになるぞ
0615デフォルトの名無しさん
05/03/16 16:43:20少なくてもCのgoto使って必ずスパゲッティになるって言ってる人は、
それに近いよ。どうなったらスパゲッティになるのか不思議で仕方がない。
0616デフォルトの名無しさん
05/03/16 16:43:37gotoを否定しない派−−−例外もバランス良く使っている
gotoを否定する派 −−−無駄に例外使ってわかりにくくしてる
0617デフォルトの名無しさん
05/03/16 16:44:07for (int i = 0 ; i < max ; ++i) {
if (! contains_hoge_only(list[i])) {
continue;
}
// ...
}
でイイんじゃないの?俺ならそうする。goto 使う必要性が感じられないが。
0618デフォルトの名無しさん
05/03/16 16:45:04孫なのは論外だろ。あ、ここ初心者スレかw
でも、gotoを有効に使う方法は、教えるのに10分もあれば十分。
大卒ぐらいならそのくらいの頭は持ってるでしょ?
0619デフォルトの名無しさん
05/03/16 16:46:01自作自演ですか。
0620デフォルトの名無しさん
05/03/16 16:46:51そりゃgoto使わないようにコーディングしましたっていう練習問題じゃんw
必然性など微塵も感じんぞ。
0621デフォルトの名無しさん
05/03/16 16:47:34x,yが取得できんがな。
0622デフォルトの名無しさん
05/03/16 16:47:53はっきりいいましょう。例外は簡単です。
0623デフォルトの名無しさん
05/03/16 16:48:24あなたの言う必然性って、自分のコーディングスタイルに
合っているか否かだけの基準のような気がするね。
別にそれはそれでいいけどさ、goto否定の理由にはなりえんな。
0624デフォルトの名無しさん
05/03/16 16:48:28#include <malloc.h>
main(togo,toog)
int togo;
char *toog[];
{char *ogto, tgoo[80];FILE *ogot; int oogt=0, ootg, otog=79,
ottg=1;if ( togo== ottg) goto gogo; goto goog; ggot:
if ( fgets( tgoo, otog, ogot)) goto gtgo; goto gott;
gtot: exit(); ogtg: ++oogt; goto ogoo; togg: if ( ootg > 0)
goto oggt; goto ggot; ogog: if ( !ogot) goto gogo;
goto ggto; gtto: printf( "%d goto \'s\n", oogt); goto
gtot; oggt: if ( !memcmp( ogto, "goto", 4)) goto otgg;
goto gooo; gogo: exit( ottg); tggo: ootg= strlen(tgoo);
goto tgog; oogo: --ootg; goto togg; gooo: ++ogto; goto
oogo; gott: fclose( ogot); goto gtto; otgg: ogto= ogto +3;
goto ogtg; tgog: ootg-=4;goto togg; gtgo: ogto= tgoo;
goto tggo; ogoo: ootg-=3;goto gooo; goog: ogot= fopen(
toog[ ottg], "r"); goto ogog; ggto: ogto= tgoo; goto
ggot;}
0625デフォルトの名無しさん
05/03/16 16:49:00俺の例外は簡単だと思う。
ブロックでひとつネストが深くなるのがむかつくけどね。
0626デフォルトの名無しさん
05/03/16 16:49:05括弧を探すのめんどい
0627デフォルトの名無しさん
05/03/16 16:49:27gotoを使う必然性もないよね?
>>621
じゃー、
for (int i = 0 ; i < max ; ++i) {
int x, y;
if (! contains_hoge_only(list[i], &x, &y)) {
continue;
}
// ...
}
…にでもすれば?(´Д`)
0628デフォルトの名無しさん
05/03/16 16:49:28例外をgotoに置き換えてもそのまま成り立つねw
0629デフォルトの名無しさん
05/03/16 16:49:560630デフォルトの名無しさん
05/03/16 16:50:260631デフォルトの名無しさん
05/03/16 16:50:29むかつくのかよ。ただ事じゃないよなw
0632デフォルトの名無しさん
05/03/16 16:51:20参照渡しまくってまでやる価値ないだろ
0633デフォルトの名無しさん
05/03/16 16:51:29>gotoを使う必然性もないよね?
何言っても例外マンセーじゃ話にならんぞ。
0634デフォルトの名無しさん
05/03/16 16:51:40それをやると複雑だっていうのは偉い人もいっているぞ。
むしろgoto使った方が簡単だとも。
第3の方法として、例外が挙げられるがtry catchで囲んでしまえば、その範囲だけをみればいいわけだから、簡単だ。
単純なのはgotoだけど、例外は気をつけないといけない範囲が決まっているので楽かもしれない。
0635デフォルトの名無しさん
05/03/16 16:52:20>gotoを使う必然性もないよね?
だからどっちだっていいじゃん。
そこまでこだわる理由がわからん。
引っ込みが付かなくなっただけだろうけど。
0636デフォルトの名無しさん
05/03/16 16:53:44いや、俺、例外なんて一言も言ってないんだけど…。
>>634
偉い人のドキュメントへのポインタきぼんぬ。
あとここで例外使っちゃいかんでしょ。
>>635
gotoを使う必要性がない→gotoを使うと可読性が低くなる「可能性が高い」→使わない方が良い
0637デフォルトの名無しさん
05/03/16 16:54:18goto見ただけでアレルギーおこすのは、おかしいって。
0638デフォルトの名無しさん
05/03/16 16:54:23あと関係ないけどswitchのcaseラベル。
あれインデントはswitchと揃えたほうが見やすい。
実処理が2段下がってるって悲しいよホント。
走りたくなる。
0639デフォルトの名無しさん
05/03/16 16:55:38ぜんぜん論理になってないんだけど。。。
0640デフォルトの名無しさん
05/03/16 16:56:46内容が例外なく百番煎じなのが哀しいね。
君たちの存在ってそんな程度。
0641デフォルトの名無しさん
05/03/16 16:56:56>gotoを使う必要性がない→gotoを使うと可読性が低くなる「可能性が高い」→使わない方が良い
使わないほうが良いことがなぜ使うなになるのか?
0642デフォルトの名無しさん
05/03/16 16:57:37gotoを使うと可読性が高くなる「可能性がある」
可読性教育しないのが悪いだけだろ。
ハンガリアンまんせーですか?
0643デフォルトの名無しさん
05/03/16 16:57:52そのままあなたにお返しします。
0644デフォルトの名無しさん
05/03/16 16:58:36それだけのこと。
0645デフォルトの名無しさん
05/03/16 16:59:090646デフォルトの名無しさん
05/03/16 17:00:050647デフォルトの名無しさん
05/03/16 17:00:12私の頭の中では結論が出ました。
どうもありがとうございました。
0648デフォルトの名無しさん
05/03/16 17:01:11String terminated by Zeroだっけ?
0649デフォルトの名無しさん
05/03/16 17:02:250650ヽ(´ー`)ノ ◆.ogCuANUcE
05/03/16 17:02:29http://pc5.2ch.net/test/read.cgi/tech/1021364372/
0651デフォルトの名無しさん
05/03/16 17:03:29一部、勘違いしてる人がいるだけです。
0652デフォルトの名無しさん
05/03/16 17:04:05freeの話題もね。
0653デフォルトの名無しさん
05/03/16 17:05:06これも完全否定します?
0654デフォルトの名無しさん
05/03/16 17:05:440655デフォルトの名無しさん
05/03/16 17:05:44\0で終わる文字列って意味なんだ。
0656デフォルトの名無しさん
05/03/16 17:06:02詳しく!!
0657デフォルトの名無しさん
05/03/16 17:06:57どうせ OS が開放するんだし、別に free しなくてもイイんじゃねーの的な話じゃない?
0658デフォルトの名無しさん
05/03/16 17:07:46>>470ですた...orz
0659デフォルトの名無しさん
05/03/16 17:08:13そりゃやばい罠w
0660デフォルトの名無しさん
05/03/16 17:09:16初心者ってメモリリーク気にしないのかね。こわぁ〜。
0661デフォルトの名無しさん
05/03/16 17:09:19現実を見ようよ。
0662デフォルトの名無しさん
05/03/16 17:09:590663デフォルトの名無しさん
05/03/16 17:10:07内容ウスいから読むだけ無駄だしさあ
0664デフォルトの名無しさん
05/03/16 17:10:17MS-DOSとかWin3.xとかならそうもいかないんじゃね?
0665デフォルトの名無しさん
05/03/16 17:11:13もうfreeの話題に移ってますよ。
0666デフォルトの名無しさん
05/03/16 17:11:460667デフォルトの名無しさん
05/03/16 17:12:13今はnew、deleteしか使わんから使い方忘れたw
0668デフォルトの名無しさん
05/03/16 17:13:12めんどいけど。
0669デフォルトの名無しさん
05/03/16 17:13:55たぶんLispで関数型を体験すると、「なんだ、関数型って何にも出来ないじゃないか」
っていうふうになってしまうかもしれないので、OCamlを推奨。
SDL使えるよー 例外使えるよー 困った時は手続きで書くこともできるよー いろんな機能満載!
さぁ、みんなもOCamlを使おう!!!
0670デフォルトの名無しさん
05/03/16 17:14:130671デフォルトの名無しさん
05/03/16 17:15:15Emacs Lisp を使えばいいよ(´ー`)
0672デフォルトの名無しさん
05/03/16 17:15:16あまり良くわからないや。
0673デフォルトの名無しさん
05/03/16 17:16:25if (エラー発生) goto exception1;
//処理
for(i=0;i<n;i++)
{
if( エラー発生) goto exception2;
//処理
}
//処理
finally:
//処理
return;
exception1:
//処理
goto finally;
exeption2:
//処理
goto finally;
どっちがみやすいかな?
0674デフォルトの名無しさん
05/03/16 17:19:28freeしたところでメモリコンパクションまでしてはくれないというのはあったはず。
GC付きOSがないのはなんだかなぁとD言語の人が言ってました。
0675デフォルトの名無しさん
05/03/16 17:19:29同レベル。よって引き分け。
0676デフォルトの名無しさん
05/03/16 17:20:530677デフォルトの名無しさん
05/03/16 17:21:00それが何でgotoと比較されるのかわからん
0678デフォルトの名無しさん
05/03/16 17:21:02goto使うのでもその程度の使い方だから、
gotoであることのデメリットは感じません。
だからと言って例外がいけないとも思いません。
0679デフォルトの名無しさん
05/03/16 17:21:49goto 厨が何故か例外に固執するから。
0680デフォルトの名無しさん
05/03/16 17:22:23逆立ちしても斜めから見ても見えない。
折れの目がどうにかなっちゃったのか?
0681デフォルトの名無しさん
05/03/16 17:24:410682デフォルトの名無しさん
05/03/16 17:24:48どう見てもあんたが固執しすぎだよw
私は例外ノーなんていってないもんね。
gotoだって使い方を考えれば有効でしょ、
とは何度も言ってるけど、そのたびに
必然性が無いとか訳わからんこと言ってくるのは
必ずあなた。
0683デフォルトの名無しさん
05/03/16 17:26:100684デフォルトの名無しさん
05/03/16 17:26:34例外の特殊さは戻り値が(Exceptionを含めると)複数あるところだよね
そして例外大前提プログラミングとか変なことが始まってしまう
0685デフォルトの名無しさん
05/03/16 17:26:49まだ言ってるよwガンガレーww
0687デフォルトの名無しさん
05/03/16 17:28:14使わなくても良くなるだけで、使いたければ使ったっていいんでしょ?
0688デフォルトの名無しさん
05/03/16 17:28:31PG言語界でむやみにネストを増加させる奴らは巨悪だよな。
0689デフォルトの名無しさん
05/03/16 17:28:580690デフォルトの名無しさん
05/03/16 17:29:25使いたければ使っても別に強制はできないけれど、どちらかというと>>470の場合はgotoは不要だと思う。
0691デフォルトの名無しさん
05/03/16 17:30:19「どちらかというと」って単なるあなたの主観じゃんw
もう何言ってもダメそうなのがわかってきたよ。
0692デフォルトの名無しさん
05/03/16 17:31:09もともとスタイルなんていうのはそういうものだが。
0693デフォルトの名無しさん
05/03/16 17:31:12gotoよりfreeより巨悪なのはネスト。
↓
0694デフォルトの名無しさん
05/03/16 17:31:13自分の考えを一般論みたいに言うのはやめて。
初心者が迷惑するから。
0695デフォルトの名無しさん
05/03/16 17:32:17構造化の観点から言えば関数化する方がいいんじゃないの?
0696デフォルトの名無しさん
05/03/16 17:32:46つまり、gotoもあり、例外も然り、ってことでお開きにしましょうか。
0697デフォルトの名無しさん
05/03/16 17:33:10だが経験豊富な俺の方が正しい。
0698デフォルトの名無しさん
05/03/16 17:33:520699デフォルトの名無しさん
05/03/16 17:34:270700デフォルトの名無しさん
05/03/16 17:34:530701デフォルトの名無しさん
05/03/16 17:35:07経験何年?
0702デフォルトの名無しさん
05/03/16 17:35:38ひとつの関数からしか使われない共通サブ関数を用意するのは好き嫌いだろ
0703デフォルトの名無しさん
05/03/16 17:35:44暫くロムってる。。。
0704デフォルトの名無しさん
05/03/16 17:36:05えと、3ヶ月くらいです… 今年大学入学なんです^^
0705デフォルトの名無しさん
05/03/16 17:36:340706デフォルトの名無しさん
05/03/16 17:36:40うわ、きたこれ
0707デフォルトの名無しさん
05/03/16 17:36:45ネタならよしてくれw
0708デフォルトの名無しさん
05/03/16 17:37:340710デフォルトの名無しさん
05/03/16 17:37:55マジレス。
0711デフォルトの名無しさん
05/03/16 17:39:07すべてがわかった。もういいよ。これまでのことは許すw
演習が終わったら早く家に帰りなさい。
0712デフォルトの名無しさん
05/03/16 17:40:03今年ってまだ3月だが1月入学の大学とか?
0713デフォルトの名無しさん
05/03/16 17:40:07大学は4月からです。みなさん、プログラミング教えてあげてもいいですよ。
0714デフォルトの名無しさん
05/03/16 17:41:20単に例外習いたてで、とにかく使いたいって時期なんだと思うので却下。
0715デフォルトの名無しさん
05/03/16 17:42:09そういう典型的なDQN的発言は計算?
おっと、また喜んじゃうか。
0716デフォルトの名無しさん
05/03/16 17:43:090717デフォルトの名無しさん
05/03/16 17:43:45別に高校生でもプログラミングぐらいするでしょ。
0718デフォルトの名無しさん
05/03/16 17:44:19この話題は少なくても向こう6ヶ月は凍結ということでお願いいたします。
0719デフォルトの名無しさん
05/03/16 17:44:32エラーの無い処理は一画面に収まるし
エラーが発生してもすぐ下に処理が発見できる
Trueルートに専念できる最強最高のコーディングだろ?
そこらへんどうよ?
0720デフォルトの名無しさん
05/03/16 17:45:010721デフォルトの名無しさん
05/03/16 17:45:38凍結終わるまで、安心して他スレにいってていいよ
0722デフォルトの名無しさん
05/03/16 17:46:04仕事の効率アップで、来週は一週間休んじゃうぞー。
0723713
05/03/16 17:46:250724デフォルトの名無しさん
05/03/16 17:49:03gotoなら同じスコープ内に発見できる。
>Trueルートに専念できる最強最高のコーディングだろ?
ひと目で見渡せるコード上じゃ大差ねーな。
0725デフォルトの名無しさん
05/03/16 17:49:390726デフォルトの名無しさん
05/03/16 17:50:170727デフォルトの名無しさん
05/03/16 17:51:350728デフォルトの名無しさん
05/03/16 17:51:36嫉妬か。やはりgoto使い3級の俺は最強だったな。
0729デフォルトの名無しさん
05/03/16 17:52:203級なのか最強なのかはっきり汁
0730デフォルトの名無しさん
05/03/16 18:01:13ただの粘着だったか。
0731デフォルトの名無しさん
05/03/16 18:02:41他スレに行ってたはずが、相当このスレ気になってるんだなw
今夜はこのスレで徹夜ですか?
0732デフォルトの名無しさん
05/03/16 18:03:47このくらいの会話になってくると、明らかに学生ってのが良くわかる。
0735713
05/03/16 18:06:130736デフォルトの名無しさん
05/03/16 18:06:520737デフォルトの名無しさん
05/03/16 18:07:090738デフォルトの名無しさん
05/03/16 18:07:22だまれ!この淫乱メスブタ!
0739デフォルトの名無しさん
05/03/16 18:08:09ご勝手に。
0740デフォルトの名無しさん
05/03/16 18:08:430741デフォルトの名無しさん
05/03/16 18:08:48確かにな。まったく気づかなかった。
0742デフォルトの名無しさん
05/03/16 18:08:49うっさい禿げ
0743デフォルトの名無しさん
05/03/16 18:08:53↓
0744デフォルトの名無しさん
05/03/16 18:09:180745デフォルトの名無しさん
05/03/16 18:10:090746デフォルトの名無しさん
05/03/16 18:10:380747デフォルトの名無しさん
05/03/16 18:11:090748デフォルトの名無しさん
05/03/16 18:11:430749デフォルトの名無しさん
05/03/16 18:12:200750デフォルトの名無しさん
05/03/16 18:12:290751デフォルトの名無しさん
05/03/16 18:12:522人目の男の子にはちょうどいい名前。
2人目の女の子の時は、勇子もおすすめ。
0752デフォルトの名無しさん
05/03/16 18:13:42find boost_1_32_0 -name "*.hpp" -print | xargs grep goto
ってすると結構ヒットした。
0753デフォルトの名無しさん
05/03/16 18:13:48お淑やかな女の子になって欲しいからダメ。
0754デフォルトの名無しさん
05/03/16 18:14:01かもしれないよ。
0755デフォルトの名無しさん
05/03/16 18:14:290756デフォルトの名無しさん
05/03/16 18:14:430757デフォルトの名無しさん
05/03/16 18:14:550758デフォルトの名無しさん
05/03/16 18:15:190759デフォルトの名無しさん
05/03/16 18:15:37ダウンロードして展開して任意のディレクトリに置く。
使うときはインクルードパスを設定するだけ。
0760デフォルトの名無しさん
05/03/16 18:15:560761デフォルトの名無しさん
05/03/16 18:16:350762デフォルトの名無しさん
05/03/16 18:17:380763デフォルトの名無しさん
05/03/16 18:17:430764デフォルトの名無しさん
05/03/16 18:17:59コンパイルはね。実効速度は使う機能による。単純なものは、力業でdefineして定義しただけの機能もある。
0765デフォルトの名無しさん
05/03/16 18:18:450766デフォルトの名無しさん
05/03/16 18:23:040767デフォルトの名無しさん
05/03/16 18:23:46無理やり悪い印象植え付けようとしてますねw
0768デフォルトの名無しさん
05/03/16 18:24:060769デフォルトの名無しさん
05/03/16 18:26:160770デフォルトの名無しさん
05/03/16 18:26:340771デフォルトの名無しさん
05/03/16 18:28:480772デフォルトの名無しさん
05/03/16 18:29:56コンパイラマスターしたと勘違いしてる香具師は、
日本全国ごまんといるから。
0773デフォルトの名無しさん
05/03/16 18:30:290774デフォルトの名無しさん
05/03/16 18:31:380775デフォルトの名無しさん
05/03/16 18:31:38賢いコンパイラでないかぎりほとんどされないよね。
それでいてどうしてgotoを使うのか。
確かに型にはまった使い方なら最適化されうる可能性もあるが、それ以外ならどうだろう。
gotoを良く使う人はその辺はどう考えているのかな。
それとも、型にはまった使い方以外はしないというのかな。
0776デフォルトの名無しさん
05/03/16 18:33:04> 型にはまった使い方以外
それをスパゲティコードというのではないのですか?
0777デフォルトの名無しさん
05/03/16 18:34:34逆にいうとスパゲッティプログラムを書いてしまう危険性も秘めている訳だよね。
つまり危険と非効率がgotoの本当の姿だ。
0778デフォルトの名無しさん
05/03/16 18:35:51( ´_ゝ`)フーン
0779デフォルトの名無しさん
05/03/16 18:41:580780デフォルトの名無しさん
05/03/16 18:43:16またまたはちゃめちゃな論理ですねーーー
0781デフォルトの名無しさん
05/03/16 18:44:23もういいから。うざいお。
0782デフォルトの名無しさん
05/03/16 18:44:24気づいているのにやめないのはなぜ?
0783デフォルトの名無しさん
05/03/16 18:44:54お前もうざい。
0784デフォルトの名無しさん
05/03/16 18:44:570785デフォルトの名無しさん
05/03/16 18:45:39ループ推奨派は2チャンネルの敵ですw
0786デフォルトの名無しさん
05/03/16 18:46:15論理的に話ができない人は、いつまで経っても負け犬ですよ。
0787デフォルトの名無しさん
05/03/16 18:46:16このスレでgotoの最適化について検討されたことがあるか?
0788デフォルトの名無しさん
05/03/16 18:46:45動かないコードをスパゲティコードとはよばない。
可読性の悪いgoto主体のコードをスパゲティコードと呼ぶ。
型にはまったコードは可読性が高い。
ゆえに。どこが非論理的?
0789デフォルトの名無しさん
05/03/16 18:46:470790デフォルトの名無しさん
05/03/16 18:46:500791デフォルトの名無しさん
05/03/16 18:47:520792デフォルトの名無しさん
05/03/16 18:48:21ではfreeの必要性について同思いますか?
0793デフォルトの名無しさん
05/03/16 18:49:09↓ここからはextern(C)するとどうなるのという話題
0794デフォルトの名無しさん
05/03/16 18:49:49goto叩きに持っていこうとしてるのは見栄三重。
0795デフォルトの名無しさん
05/03/16 18:49:510796デフォルトの名無しさん
05/03/16 18:50:10速いプログラムはいいプログラムだ。 最適化は重要だ。
0797デフォルトの名無しさん
05/03/16 18:50:100798デフォルトの名無しさん
05/03/16 18:50:170799デフォルトの名無しさん
05/03/16 18:50:20邪魔するな!
0800デフォルトの名無しさん
05/03/16 18:51:090801デフォルトの名無しさん
05/03/16 18:51:380802デフォルトの名無しさん
05/03/16 18:53:04goto文見るだけで、これはミートソースだってきかないんですってね。
0803デフォルトの名無しさん
05/03/16 18:53:450804デフォルトの名無しさん
05/03/16 18:53:58なにかとexなんだよ。
0805デフォルトの名無しさん
05/03/16 18:54:100806デフォルトの名無しさん
05/03/16 18:55:08__declspec( dllimport)と__declspec( dllexport)の違いを教えてください、
でした。スマソ
0807デフォルトの名無しさん
05/03/16 18:55:110808デフォルトの名無しさん
05/03/16 18:55:490809デフォルトの名無しさん
05/03/16 18:56:080810デフォルトの名無しさん
05/03/16 18:56:130811デフォルトの名無しさん
05/03/16 18:57:02exportじゃないとdllが作れない
importじゃないとdllが使えない(ヘッダでリンクって意味ね)
0812デフォルトの名無しさん
05/03/16 18:57:49gotoの最適化がどれだけご利益あるのか行ってみて。
ヴァかな折れでもわかるようにね。
0813デフォルトの名無しさん
05/03/16 18:58:36マジレスサンクス ノシ
0814デフォルトの名無しさん
05/03/16 18:59:26>>794
0815デフォルトの名無しさん
05/03/16 19:00:38すいませんねー。おかげで儲けすぎちゃって困ってるくらいです〜。
0816デフォルトの名無しさん
05/03/16 19:01:20興味が有ろうと無かろうと、プロはプロだなー。
0817デフォルトの名無しさん
05/03/16 19:02:17プロといえばgoto文を駆逐できるとでも思っていたのか?
わけわからん。
0818デフォルトの名無しさん
05/03/16 19:04:09処理速度でそんなに苦慮することもなくなってるし。
その分、10年前より楽させてもらってますけどね。
0819デフォルトの名無しさん
05/03/16 19:04:550820デフォルトの名無しさん
05/03/16 19:05:430821デフォルトの名無しさん
05/03/16 19:07:13それを材料にgoto叩こうったって意味無いことがはっきりした。
0822デフォルトの名無しさん
05/03/16 19:07:56だって、ただのジャンプ命令ですからw
0823デフォルトの名無しさん
05/03/16 19:10:49gotoはクソ、なんて言ってるのはそれこそ例外です。
0824デフォルトの名無しさん
05/03/16 19:12:530825デフォルトの名無しさん
05/03/16 19:15:250826デフォルトの名無しさん
05/03/16 19:28:380827デフォルトの名無しさん
05/03/16 19:31:16糞はお前だよ、この淫売
0828デフォルトの名無しさん
05/03/16 19:32:140829デフォルトの名無しさん
05/03/16 19:33:210830デフォルトの名無しさん
05/03/16 19:33:330831デフォルトの名無しさん
05/03/16 19:34:050832デフォルトの名無しさん
05/03/16 20:01:310833デフォルトの名無しさん
05/03/16 20:02:360834デフォルトの名無しさん
05/03/16 20:03:05, ' /::::::::::/ |:::::l|::l l::::::/ !:::::::| !:::::ハ:::::\ ' ,
/イ:/|::::/ !i::l l| |:::/ l::::::! l::::i l:::::::⊥
/ '::::/ |::/ |l:| l| 、|/_,. -!:::| !/ l:::(__ )、' ,
, ' /::::/、」ムノ !| ! 手咋≧=、| ノ ( l::(_ )::\ ' ,
; i:ハl 7》示气 }�l込_タ冫 ⌒ |:::フ´ヽ::::::\
; _」| リ 戈�ワュ′r 、 ゙≠宀⌒ヽ\ レ' /⌒ヽ:::::::::ヽ
/:::::| し´ ̄ ハ _ -‐ へ、//U // ! !ヘ:::::::::::ヽ
/:::Y´! ///// 「 ̄ ̄ | |___ -‐ ´ ヽ ハ l l ハ::::::::ヘヽ
,::::::ハ l U l ̄ ̄ | | ゙、 し ヽ- ' ノ }:::::/ヽノ(
l::::::| ヽヘ ! J i ィー冖ー一^″ -イ
l::::::| `゙、U l } U、┴’ {
ヽ:::| ' , ト 、 l __ノ イiハ ) あ ぶ }
ヽ! U ` ‐- 二  ̄ ̄ ̄ ∪ / \ ( あ ぁ |
' ' ' _ -7¨´ / _」 ) あ か 、
仄´ / r ニ \ ( あ あ 〉
| ヽ / __ // ヽ / } !! あ あ (
| ヽ`¬┌''´ノ \ / 亅 冫
0835デフォルトの名無しさん
05/03/16 20:03:250836デフォルトの名無しさん
05/03/16 20:03:500837デフォルトの名無しさん
05/03/16 20:06:44● ● ●
● ● ●
● ● ●
● ● ●
● ● ● エーデルワーイス エーデルワーイス
● ● ● _( "''''''::::.
● ● ● ●__ ____,,,... --‐'''^~ ヽ ゛゛:ヽ
● ● ● ●:::::::::....:"""" ・ ・ . \::. 丿
● ● ● ●::::::::::::::::::: ・ ....:::::::彡''ヘ::::/
● ●:::::::::::::::::::::::::::::;;;;;,, ---‐'' "^~
●●●●●-‐‐ ''^~
0838デフォルトの名無しさん
05/03/16 20:45:310839デフォルトの名無しさん
05/03/16 22:20:31「無制限な goto は危険」を共通認識として後は各自好きにすればいいんじゃないの?
0840デフォルトの名無しさん
05/03/16 22:23:22空気読め
0841まともに動いてない ◆/8LpUMqVAk
05/03/16 22:23:36やってるよー
0842デフォルトの名無しさん
05/03/16 23:19:23環境 Linux
#include<stdio.h>
#define MAX 100
struct student {
int no;
};
main()
{
struct student *p;
p->no = MAX;
printf("%d\n",p->no);
return;
}
コンパイルはとおるんですが、実行すると落ちます。
教えてください。
0843デフォルトの名無しさん
05/03/16 23:21:39平気
0844デフォルトの名無しさん
05/03/16 23:22:04main()
{
struct student s;
struct student *p = s;
p->no = MAX;
printf("%d\n",p->no);
return 0;
}
0845デフォルトの名無しさん
05/03/16 23:22:320846まともに動いてない ◆/8LpUMqVAk
05/03/16 23:24:16struct student p;
p.no = MAX;
printf("%d\n",p.no);
0847デフォルトの名無しさん
05/03/17 00:00:31構造体使う前にポインタちゃんと理解しろ
0848デフォルトの名無しさん
05/03/17 00:02:04無駄口はいらん
0849デフォルトの名無しさん
05/03/17 01:01:36だって、あまりにもわかりやすいミスだから。。。
0850デフォルトの名無しさん
05/03/17 01:02:15無駄口はいらん
0851デフォルトの名無しさん
05/03/17 01:04:53コンパイル通るの?
main()って何もつけないと戻値ってintじゃなかったっけ?
0852デフォルトの名無しさん
05/03/17 01:06:420853デフォルトの名無しさん
05/03/17 02:08:36ISO/IEC 9899:1999 Foreword -5により、暗黙のintは許されなくなりました。
0854デフォルトの名無しさん
05/03/17 02:56:550855デフォルトの名無しさん
05/03/17 02:57:52ふーん、そうなんだ。
じゃあ、暗黙はvoidなのかしら?
0856デフォルトの名無しさん
05/03/17 03:14:420857デフォルトの名無しさん
05/03/17 03:44:59そういうこと。
0858デフォルトの名無しさん
05/03/17 12:23:18釣り決定!!
0859デフォルトの名無しさん
05/03/17 12:47:31「本当にコンパイル通ったのか」は不明だろう。
0860デフォルトの名無しさん
05/03/17 12:57:06は?あんたばか?コンパイラによるだろ。
0861デフォルトの名無しさん
05/03/17 13:13:33main()
{
puts("Hello, world.");
return;
}
少なくともCとしてコンパイルする分にはVC++6.0,gcc-2.95.4@Debian stableのどちらでも通る。
gccは-Wallとかつけないとwarningすら出ない。
0862デフォルトの名無しさん
05/03/17 13:15:45std=c99は?
0863デフォルトの名無しさん
05/03/17 13:29:25cc1: unknown C standard `c99'
gcc-2.95.4だし。
0864デフォルトの名無しさん
05/03/17 13:37:40配列で
int arg[5][10];
というものがあるとします。
その配列argに、
(1)変数名に演算はできるのか?
int* pName=arg+1;
(2)変数名に加算・減算できるのか?
arg++;arg-=5;
(3)変数名にアスタリスクをつけて、定数または変数の代入が出来るのか?
*arg='A';*arg=78;
int val=8;*arg=val;
0865デフォルトの名無しさん
05/03/17 13:54:18それを二個の変数に入れるにはどうすればいいのでしょうか
こうですか?
int a,b=return();
0866デフォルトの名無しさん
05/03/17 13:57:26「変数」そのものを勉強し直せ
>>865
return では一つの値しか返せない
0867デフォルトの名無しさん
05/03/17 14:01:57できるかどうかやってみりゃ済むことだ。
0868デフォルトの名無しさん
05/03/17 14:05:20変数ではないので、ここでは配列名でいいと思います。
(1)できます
(2)できません
(3)できません
あくまで配列の先頭ポインタを参照することしかできません。
代入をしたければ、別にポインタ変数を作りそれにアクセスしましょう。
int* ptr=ary;
*(ptr+3)=777;
0869デフォルトの名無しさん
05/03/17 14:11:00あなたが示した配列では、int arg[5][10];
(第一次添え字 * 第二次要素数) + 第二次添え字
がポインタ演算のさいの加算値となりますのでご注意を!
arg[3][7]; の場合、
(3*10)+7
となります。
0870デフォルトの名無しさん
05/03/17 14:15:46sizeof(int)の考慮が抜けてるぞ
0871デフォルトの名無しさん
05/03/17 14:18:19int* としてポインタ変数を作るからsizeof(int)はいらない
ばか
0872デフォルトの名無しさん
05/03/17 14:25:070873デフォルトの名無しさん
05/03/17 14:26:34「ポインタのポインタ」は「ポインタ」だ。
0874デフォルトの名無しさん
05/03/17 15:04:01業界的にはどっちで呼んでるの?
意味合いは同じだとおもうけど。
0875デフォルトの名無しさん
05/03/17 15:05:09分からないので、助言をお願いします。
SQLiteのソースコードをダウンロードして、以下のようなテストを書きましたが
Error: 外部シンボル '_sqlite3_open' が未解決
とのエラーが発生しました。確かにヘッダファイルしか読み込んでないので
その通りだと思いましたが、如何せんこの先どうすればよいのか分かりません。
sqlite3.dll, sqlite3.defをどうにかリンクすれば良いのかとも思っているのですが
LoadLibraryで読み込むのも違うような気がして悩んでいます…。
======
#include <stdio.h>
#include "sqlite/sqlite3.h"
void main(void)
{
sqlite3 *db;
int result = sqlite3_open("test.db", &db);
if(result){
printf(sqlite3_errmsg(db));
} else {
// ここで sqlite3_exec() などの処理
}
sqlite3_close(db);
}
====
環境はWindowsXP + BorlandC++5.5 + SQLite3.1.6です。
0876デフォルトの名無しさん
05/03/17 15:26:27DIBをまとめたクラスをDLLと受け渡したく、DLLはLoadLibraryでロードし、
typedefで定義した型に代入と言う形で呼び出したいのですが、何をどう
定義すれば良いのかさっぱり解りません。
0877デフォルトの名無しさん
05/03/17 15:31:25http://sqlite.org/capi3.html
これをよくよめぇ
0878デフォルトの名無しさん
05/03/17 15:32:08implib.exeでインポートライブラリ作れ
0879デフォルトの名無しさん
05/03/17 15:39:28うまい例え話が思いつかないが違うぞ。
0880875
05/03/17 16:03:25ありがとうございます。
一応そのURL(の日本語訳)も読んでいたのですが、それ以前に
DLLの使い方というか根本的なところから分かっていなくて…orz
>>878
ありがとうございます。
以下のようにインポートライブラリを作成してみたのですが、やはり
未解決とのエラーになってしまいます。インポートライブラリの使い方を
間違っているんでしょうか。
> implib sqlite3.lib sqlite3.dll
> bcc32 test.cpp sqlite3.lib
0881デフォルトの名無しさん
05/03/17 16:15:43-aオプション入れても駄目?
0882デフォルトの名無しさん
05/03/17 16:33:26配布・改変が許可されたCのソースを落として、まずそのままビルド、実行したら通りました。
しかしソースに手を加えてビルド、実行を繰り返しているうちに、
LIBCD.lib(crt0.obj) : error LNK2001: 外部シンボル "_main" は未解決です
が出るようになってしまいました。コンソールではなくWin32APPなのですが・・・。
ファイルが壊れたのかと思って、元のファイルに、改変したいくつかのcソースを上書き
していくと、いつの間にか同じエラーが出てしまいます。。どうしてなんでしょうか・・・
0883デフォルトの名無しさん
05/03/17 16:36:44ソース作った奴に聞くのが先だろ
0884875
05/03/17 16:40:53ありがとうございます。できました!
implibのオプションを見た限りでは、エラーに「_sqlite3_open」と先頭にアンダースコアが
付いているから「-a」オプションが必要だった…という解釈でいいのでしょうか。
(DLLの関数だからアンダースコアが付くんでしょうか??? もう少し勉強します…)
> implib -a sqlite3.lib sqlite3.dll
0885882
05/03/17 16:42:41あ、すいません。VC++の設定上の問題かと思ったので・・・
0886デフォルトの名無しさん
05/03/17 16:49:13ビルドが通らなくなるような変更を加えたお前の責任としか。
0887デフォルトの名無しさん
05/03/17 17:06:21JPEGとかはどうやってるんでしょうか?
0888デフォルトの名無しさん
05/03/17 17:18:42関数とAPIは別物
[API] http://e-words.jp/w/API.html
[関数] http://e-words.jp/w/E996A2E695B0.html
0889デフォルトの名無しさん
05/03/17 17:35:19それくらいも調べられないなら、作るのをやめたほうがいい。
0890デフォルトの名無しさん
05/03/17 17:44:23Independent JPEG Group
ttp://www.ijg.org/
0891デフォルトの名無しさん
05/03/17 17:49:54グローバル変数ばかっかり使っていたので、できる限り使わないように組み直しています。
WndProcで何かのキーを押したらそのキーに対応したフラグ(変数)を1にするようにしていました。
そのフラグは別の関数内で使用しています。
WinMainの中で変数の宣言をしているのですが、WndProc内でどういう形で呼び出せばいいのでしょうか?
0892891
05/03/17 17:50:210893デフォルトの名無しさん
05/03/17 17:59:000894891
05/03/17 18:13:45何か違和感がありますがここだけはそのままグローバル変数を使ってみます。
0895デフォルトの名無しさん
05/03/17 18:24:31オーバーロードしてある関数のうちのひとつを派生クラスで
オーバーライドしたのですが、オーバーライドしてない方の
関数を呼び出そうとしたときにコンパイルエラーになってしまします。
Javaでは出来るようなのですがC++は出来ない仕様なのでしょうか?
0896895
05/03/17 18:25:28'Read' : 関数が不正な 1 個の実引数をともなって呼び出されました。
コンパイラ
VC6.0SP5, BCC
class CReader{
public:
virtual ~CReader(){
}
virtual void Read(){
}
virtual void Read(int a){
}
};
class CExtendedReader : public CReader{
public:
void Read(){
}
};
int main()
{
CExtendedReader reader;
reader.Read(0);
return 0;
}
0897デフォルトの名無しさん
05/03/17 18:27:050898デフォルトの名無しさん
05/03/17 18:28:03コンパイラの最適化を信じろ。
0899デフォルトの名無しさん
05/03/17 18:29:42そうだね。心の汚い人間になるところでした。
0900デフォルトの名無しさん
05/03/17 18:29:54CExtendedReaderの定義の中に、using CReader::Read;と書け。
0901デフォルトの名無しさん
05/03/17 18:32:50ちょっと驚き
0902デフォルトの名無しさん
05/03/17 18:34:310903デフォルトの名無しさん
05/03/17 18:34:57何の話?namespaceの事?
0905デフォルトの名無しさん
05/03/17 18:38:15うんそれそれ。でも良く見たら>>900にnamespaceって書いてないね。
Javaのimportとの違いを知りたくなったので調べて見ます。
0906デフォルトの名無しさん
05/03/17 18:42:28何を見るの?
0907デフォルトの名無しさん
05/03/17 18:43:05"C++" using でぐぐる
0908デフォルトの名無しさん
05/03/17 18:52:11using namespace hoge; : import hoge.*;
using hoge::Writer; : import hoge.Writer;
エイリアス有り : エイリアスなし
0909デフォルトの名無しさん
05/03/17 19:09:51using fbar = namespace foo.bar;
とかできる点だな。
0910デフォルトの名無しさん
05/03/17 19:14:57これはつまり netque と torutk::network::que を同時に宣言してるってこと?
0911ヽ(´ー`)ノ ◆.ogCuANUcE
05/03/17 19:31:26それ C# じゃねーか YO!
>>910
alias.
#include <boost/program_options.hpp>
int main(int argc, char const * argv[])
{
namespace bopt = boost::program_options;
bopt::options_description a = ...;
}
…とか。エディタの補完機能使えばいいだけの話なんだけどね(´Д`)
0912デフォルトの名無しさん
05/03/17 19:38:43= の右辺値は既存のネームスペースのみなのか。
そっちのが安全でいいけどね。
0913デフォルトの名無しさん
05/03/17 19:41:34Dのalias = Cのtypedef
Dのtypedef = 型独立
namespaceとまるで関係ない
0914デフォルトの名無しさん
05/03/17 19:41:560915デフォルトの名無しさん
05/03/17 19:45:18出来るならファイル分ければいいだけさ。
0916デフォルトの名無しさん
05/03/17 21:22:28あらかじめ4つのHBITMAP型を宣言して、それぞれに
LoadImageしておいた方がいいんでしょうか?
それともその場その場で一つのHBITMAP型を使いまわしたほうが良いですか?
0917デフォルトの名無しさん
05/03/17 21:25:280918デフォルトの名無しさん
05/03/17 21:29:46同じサイズのBMPならひとつ読み込んでBitBltでどうにかするとゲーム風。
そうじゃねなら普通別々に読み込むわな。
0919デフォルトの名無しさん
05/03/17 21:31:20言いたいことはさっぱりわからないが、とりあえずvoid */const void *をやり取りすればいいんじゃないか?
0920デフォルトの名無しさん
05/03/17 21:42:30ケースバイケース
0921sage
05/03/17 21:50:50を求めるプログラムを教えてくれないでしょうか?
お願いします。
0922921
05/03/17 21:51:410923デフォルトの名無しさん
05/03/17 21:55:13cin >> current;
なんてな。
0924デフォルトの名無しさん
05/03/17 22:03:41意味がわからん
0925デフォルトの名無しさん
05/03/17 22:09:13マルチは氏んでね
0926デフォルトの名無しさん
05/03/17 22:09:19答え =(今回入力したx−前回入力したx )/(今回入力したy−前回入力したy)
0927デフォルトの名無しさん
05/03/18 00:13:430928デフォルトの名無しさん
05/03/18 01:32:420929デフォルトの名無しさん
05/03/18 03:10:00学生でつ(´ω`)
そもそも調べて分かるようならここで質問しないのですが、検索しても自分のケースとは違うので結局答えに至らないという場合があります。
本の説明は難しかったり、ある程度知識がないと分からなかったり。
自分もここ(の板)で聞きたかったことがあるのですが、ソースを公開しないと説明できない量なので自力でやってました。
4日間1日12時間以上1文字変えてはデバックという作業を繰り返して、さっき上手くいったときの快感は寝るまで忘れません。
まだこういう体験をしていない人はたくさんいると思いますが、くじけず頑張ってください。
では寝ますノシ
0930デフォルトの名無しさん
05/03/18 05:51:050931デフォルトの名無しさん
05/03/18 07:07:340932デフォルトの名無しさん
05/03/18 12:16:02良い言語。
0933デフォルトの名無しさん
05/03/18 12:16:55見てみたいようなそうでないような…
0934929
05/03/18 12:43:40>>933
フライトシューティングでつ。
タイムラグがあるけど一応WAN内なら対戦可能・・・に何とかなりました。
相手の座標と描画(座標がおかしければ当然変な位置に描画)がおかしく、
エラーが出るわけでもないので原因が特定できませんでした
メッセージの欠損か描画関数がおかしいのかもしくは別のところか。
バックアップもとらずに不審点をひたすら変えていったら何とか成功。
結局どこをどう弄って直ったのか把握できず。
できるだけ修復しやすいプログラムにしていますが、
音楽を流したり他のPCと通信するとなると一気に何行も書かないと駄目なのでしょうがないといえばそれまでなんですが。
0935デフォルトの名無しさん
05/03/18 14:16:550936929
05/03/18 14:21:100937477
05/03/18 15:30:35inline 使いまくるとダメな理由 or それ書いてる書籍の情報キボン(`・ω・´)
0938デフォルトの名無しさん
05/03/18 15:33:11全部嫁よ
Efficient C++ 以外は全て良本だ
0939デフォルトの名無しさん
05/03/18 18:46:33まぁ良本という噂はかねがね伺ってますので(Efficientは初見だけど)
まったりと読んでいくつもりですが…
0940デフォルトの名無しさん
05/03/18 19:25:460941929
05/03/18 19:35:26本を読んでも理解できなくても、自分の必要とする関数を使っていくだけで勝手に覚える。
一定期間続ければ途中の短期間で一気に本の内容が理解できるようになる。
ダイエットみたいなものかね、したことないけど。
0942デフォルトの名無しさん
05/03/18 20:25:19おまえはセンス無いから
アドバイスに説得力がない
0943デフォルトの名無しさん
05/03/18 21:01:52一応全部読んでみたいので
0944デフォルトの名無しさん
05/03/18 21:04:27ここには必読書のためのスレとかあるだろ?
0945デフォルトの名無しさん
05/03/18 21:42:28文字列処理に関しての知識が足りないため現在修行中です。
とりあえず、ある文字列から
タブ、スペース、リターン、キャリッジリターンをデリミタ文字にして
トークンごとに文字列を取得するクラスを作れるところまでいきました。
次はCSVファイルあたりでもよみこんでみようかと、
デリミタをタブ、スペース、リターン、キャリッジリターン、コンマにして挑んだところ、
ダブルコーテーションで囲まれた範囲のリターンやスペースがデリミタ文字にならないらしく
おかしなことになっております。
こういった場合はどんな手法を使うのが定石なのでしょうか?
強引にダブルコーテーションがきたら、その中の文字をデリミタ文字jでのチェックを行わないと
してしまっていいのでしょうか?
アドバイスお願いします。
0946デフォルトの名無しさん
05/03/18 21:43:32ありがとう、スレあったんだな!
0947デフォルトの名無しさん
05/03/18 21:43:46http://pc5.2ch.net/test/read.cgi/tech/1106129164/
先人の知恵を受け入れてからでも遅くは無い
0948デフォルトの名無しさん
05/03/18 21:46:46ttp://www-ccs.ucsd.edu/c/syntax.html を見るとわかりやすいだろう
0949デフォルトの名無しさん
05/03/18 22:25:30その方法でなんら問題ない。
最も綺麗な解法だと思う。
0950デフォルトの名無しさん
05/03/18 22:28:34inlineばっかりしてるとサイズが爆発するぞ。
んでキャッシュが効かなくなるしロードに時間がかかるようになって結局遅くなる可能性がある。
どのへんまでが高速化の分岐点かは環境によって違う。
マクロの代わり程度の小さな関数に限っておいた方が無難。
0951デフォルトの名無しさん
05/03/18 22:32:36リンクの紹介ありがとうございます。
色々と奥が深そうですね。
最終的にC言語風味のスクリプトを作りたいと書きましたが
実はC言語風味のスクリプトを作ってそれをどうやってプログラム側で処理したらいいのかとか
その辺からわかっていなかったりします。(スクリプトの本を買っても言語仕様はのっているのですが)
ちなみに「処理したらいいのか」というのは構文解析がどうとかいう問題ではなくて
構文解析まできたとしてその後、どうやってプログラム側にスクリプト側の値を渡すのかといったものです。
例えばいまは
NAME = "佐藤 太郎";
とかやるとNAMEというプログラム側であらかじめ決めたキーワードに値が入ってきますが、
スクリプトで作った場合だとどのようにしてプログラム側に値を渡すのでしょうか?
実は一番知りたいのはこんな部分だったりするのですが何かオススメ書籍とかないでしょうか?
0952デフォルトの名無しさん
05/03/18 22:37:29その質問をこのスレでするのか?ふさわしいスレまで紹介してもらって?
0953デフォルトの名無しさん
05/03/18 22:38:29実行コードのサイズと、消費メモリサイズを混同する痛い人は、あなたですか?
0954デフォルトの名無しさん
05/03/18 22:42:39ところがですね。
会社にあるソース(誰が書いたかわからない)では
ダブルコーテーションからダブルコーテーションまでを
1つのキーワードと認識できているようでフォーマット定義ファイル(?)と
キーワード定義ファイル(?)をいじるだけでC言語みたいな複雑なものから
CSVみたいな簡単なものまで解析できてしまっています。
(ソースが複雑過ぎて&私の文字列処理の知識が貧困過ぎてコメントの用語からいってわかりません(笑))
なにか自分のやり方と根本的に違うような気がするので書籍をあさっているのですが、
一朝一夕では理解できないと考え地道に勉強しております。
0955デフォルトの名無しさん
05/03/18 22:45:331〜3行のif文が存在しない関数をinlineにするって基準はダメ?
0956デフォルトの名無しさん
05/03/18 22:45:57正規表現の本でも買って来いや
0957デフォルトの名無しさん
05/03/18 22:52:51もうしわけございませんでした。
>>956
ありがとうございます。
とりあえず、紹介してもらったリンク先と
拾ったキーワードに関する本を片っ端から調べてみます。
0958デフォルトの名無しさん
05/03/18 23:06:33実行コードのサイズが増えても消費メモリが増えないとでも?
コードの長さ分だけはどうやっても増えるだろうが。
0959デフォルトの名無しさん
05/03/18 23:10:05サイズはわかるがif文はなぜ?
何か根拠あるのかな。気になる。
0960デフォルトの名無しさん
05/03/18 23:14:18文字解析や構文解析は似たようなコードがひたすら並ぶことも多いのでソース見てもわからんのはあたりまえ。
ためしにソースコードを圧縮してみると明らかに圧縮率が高かったりする。
それだけ冗長度が高いってこった。
アルゴリズムのレベルで理解しないと既存のソースなんて参考にはならんよ。
あるいはパーサジェネレータの挙動を見る方がためになるくらいだ。
0961デフォルトの名無しさん
05/03/18 23:15:030962デフォルトの名無しさん
05/03/18 23:16:24それでも爆発する程サイズ増えるもんなの?
今時のコンパイラならその辺上手くバランス取ってくれそうだけど。
0963デフォルトの名無しさん
05/03/18 23:21:00正規表現では対応関係を記述できない。
0964デフォルトの名無しさん
05/03/18 23:22:53制御文やstatic変数・関数がコードの中にあるとinlineは無効じゃなかった?
どうせコンパイラが無視するから関係のないことかも知れんけど。
0965デフォルトの名無しさん
05/03/18 23:24:38マルチバイト文字だと解析が難しくなるよ。
0966デフォルトの名無しさん
05/03/18 23:35:00「今時のコンパイラがその辺上手くバランスを取って」
くれるなら、手作業でinlineをつけまくるより、
最初からコンパイラの自動inline化にまかせればいい。
0967デフォルトの名無しさん
05/03/18 23:52:41女性のウナジからフトモモにかけてのライン。
妄想百科辞典【中国民萌書房】
0968デフォルトの名無しさん
05/03/18 23:52:53なるほど。
コードの長さ分増えることでキャッシュが足りなくなるほどの
メモリ消費が発生するといいたんですね。
しつこいですが、ファイルサイズと消費メモリサイズを混同しないように。
あなたが、入門書・解説サイトなどを読んでるうちに
脳内で誤解が生じてしまった痛い人なのは、同情します。
でも間違いは間違いです。
チンケな自尊心を捨てて、反省してください。
0969デフォルトの名無しさん
05/03/18 23:55:14コンパイラは勝手にinline化する権限がある
最適化オプションで傾向を変えられないならinlineって無駄では?
とも思ってしまう今日この頃
0970デフォルトの名無しさん
05/03/19 00:15:33あのなぁ。
キャッシュのサイズってどんだけか知ってるか?
それと最初は実行コードのサイズがどうとか言ってたのにこんどはファイルサイズかよ。
実行コードが増えればファイルサイズも消費メモリも増えるだろうが。ボケ。
(そりゃ例外がないとまでは言わんよ。でもまさかここでそんなことを持ち出さないだろうな?)
0971デフォルトの名無しさん
05/03/19 00:32:040972デフォルトの名無しさん
05/03/19 00:32:310973デフォルトの名無しさん
05/03/19 00:35:57int main( void)
{
int* mem = new int[ 4ギガバイト];
delete [ ] mem;
return 0;
}
ってやったら、この数行のプログラムでさえも、
一瞬でもメモリサイズ4ギガバイト逝きますよね(細かいことは抜きで)。
0974デフォルトの名無しさん
05/03/19 00:36:150975デフォルトの名無しさん
05/03/19 00:42:39バイト単位ならせめてcharで。
0976デフォルトの名無しさん
05/03/19 03:18:17やってみたがメモリ使用量に変化無し?!
ただし、配列要素にアクセスするコードを入れたとたんに
スワップが始まったw
これって正しい動きなのか?
ちなみにOSはWinXP。
0977デフォルトの名無しさん
05/03/19 03:48:070978デフォルトの名無しさん
05/03/19 05:32:27タスクマネージャーで確認したところ、
スワップが始まったとたんにメモリ消費量グラフ増大。
0979デフォルトの名無しさん
05/03/19 05:41:49タスクマネージャの表示項目を増やすべし。
メモリ使用量だけでなく、仮想メモリサイズも注視しないといけない。
NT系のメモリ管理機構はUnixのそれより優れている(とされる)。
プログラマが意識しなくていい部分で色々やってくれる。
ためしに、メモリ書き込みした巨大バッファを数分間Sleepなどで保持した後、
アクセスしてみると・・・・。どうなるか、とりあえず、やってみれ。
デスクトップOSだからこういうことするんだろうと思うが、
余計なお世話にも感じる。
0980デフォルトの名無しさん
05/03/19 05:49:490981デフォルトの名無しさん
05/03/19 08:47:260982デフォルトの名無しさん
05/03/19 10:24:01関数一つinlineにしただけで、実行ファイルのサイズが700KB増えたことはある。
これが爆発する程かどうかは知らないけど。
0983デフォルトの名無しさん
05/03/19 10:29:130984デフォルトの名無しさん
05/03/19 10:32:14挫折したからって泣くなよ
0985デフォルトの名無しさん
05/03/19 10:41:490986デフォルトの名無しさん
05/03/19 10:44:52inline指定するとグローバルリンク用に非inline版の関数とinline展開したコードの
両方が生成された記憶が。
それでも精々30KBくらいしか増えなかったけどなぁ。
#streamとstringが絡むとどっちみち増えるし。
0987デフォルトの名無しさん
05/03/19 12:34:11ちなみにインテルコンパイラは配列は2GBまでだよ。
なんで、コンパイラによって制限あるんじゃない?
0988デフォルトの名無しさん
05/03/19 12:41:03まぁ、4GB超のメモリにアクセスする手段がないではないが。
0989デフォルトの名無しさん
05/03/19 12:41:0632bitOSの場合、確保しない。できない。
例外をスローする。
new(nothrow)をした場合、ヌルを返す。
それだけ。つまらん。
0990デフォルトの名無しさん
05/03/19 16:13:51ざせつ? なにいってんの このひと アホですか しんでいいですよ
きっと きみ の まわりには ざせつしたひとが いっぱい なんでしょうね
0991デフォルトの名無しさん
05/03/19 16:26:550992デフォルトの名無しさん
05/03/19 16:31:43ただのプログラミング言語だろ。
0993デフォルトの名無しさん
05/03/19 18:42:46復活の呪文かとおもた
0994デフォルトの名無しさん
05/03/19 20:07:230995デフォルトの名無しさん
05/03/19 20:26:56http://pc5.2ch.net/test/read.cgi/tech/1111231578/
0996デフォルトの名無しさん
05/03/19 20:41:480997デフォルトの名無しさん
05/03/19 20:55:150998デフォルトの名無しさん
05/03/19 21:00:570999デフォルトの名無しさん
05/03/19 21:01:371000やったーーーーーーー1000とりゲッター
05/03/19 21:02:1210011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。