C言語なら、俺に聞け! <32>
■ このスレッドは過去ログ倉庫に格納されています
0001SHOW-A孫
NGNGいろいろな言語を極めたけど、一番漏れになじんだのはCかな。
Cのことなら父をも超えた。疑問な点があったら漏れに聞け。
便所とメシ食ってる時以外は暇だが、いちいちFAQに載った質問に応えるほど暇じゃないよ。
課題丸投げなら別スレにいってね。あと、至急父に仕事を与えてやってください。
コンパイラ、過去ログなどのリンクは>>2-5 あたり
0154デフォルトの名無しさん
NGNG0155デフォルトの名無しさん
NGNG中途半端すぎて笑える。何故
TreeObj<T> **pChild;
なんだ? std::vectorを使用しない理由は?
0156デフォルトの名無しさん
NGNG上まあスレ違いなわけだが。苦笑。
0157155
NGNG・コピーコンストラクタを、実装するかは別にして書きましょうね
・operator=の戻り、おかしいですよ?
・addChildの引数は値渡しでいいんですか?
以下延々と続く…
0158デフォルトの名無しさん
NGNGobject suicide という。
0159119
NGNGTreeObj.cppは捨てて下さい
>>155
>>156
VC5.0だとvectorは自己参照ポインタ使うと引っかかるんですよ
メモリの動的確保も練習したいし
んでmap使うと習作の意味がなくなるんで
0162デフォルトの名無しさん
NGNG>GlobalFree(this); ってのは…?
そういえば MS 社は WinAPI::waveOut*** のサンプルで
HeapAlloc() 使ってるけどよそのサイトでは malloc で済ませてる
ところもあるんだけど、malloc じゃダメなのかな。
0163155
NGNGreturn (*this); ね。
多分Effective C++かMore Effective C++に載ってる。
0164155
NGNG0165デフォルトの名無しさん
NGNGwhile(ChildNum) (*pChild)->del();
これ大丈夫なん?
0167162
NGNG0169155
NGNGreturn (*this); しないと
TreeObj<std::string> x, y;
x = y = "foo";
の2行目がコンパイルできないだろう?
0171デフォルトの名無しさん
NGNG個人的には全部ディープコピーってあたりが漢だねぇって感じだヨ
0172デフォルトの名無しさん
NGNG0174デフォルトの名無しさん
NGNG燃料になんないよ
0175デフォルトの名無しさん
NGNGNULL紛争でも起こしたいのか?(藁
0176デフォルトの名無しさん
NGNGhttp://pc3.2ch.net/test/read.cgi/tech/1031028125/
銭湯員随時募集中
0177119
NGNGCの標準的な文法で比較的分かりにくいのって
ポインタと再帰呼び出しくらいですよね
0178デフォルトの名無しさん
NGNG文法関係ない
0180デフォルトの名無しさん
NGNGわかりにくいならsignal()の定義はなかなかのものだと思う
0183デフォルトの名無しさん
NGNGvoid (*signal(int sig,void (*func)(int)))(int);
まあ似たようなもんですが
WinProcなら LRESULT CALLBACK (*WinProc)(HWND ...); ですかね
0184119
NGNGこれも進化ですかね
0185デフォルトの名無しさん
NGNG0186デフォルトの名無しさん
NGNG0188119
NGNG逝ってきます
0189デフォルトの名無しさん
NGNG0190デフォルトの名無しさん
NGNG0192セミコロンってどうよ?
NGNG0193デフォルトの名無しさん
NGNGそうか、もう秋なんだね。
0194デフォルトの名無しさん
NGNGそっちか 風流だなぁ
おれはセミの匂いのするコロンかと思ったよ
0195155
NGNGhttp://www.sage-p.com/process/cool.htm
これで書け(藁
0197デフォルトの名無しさん
NGNGそこをなんとか教えてください
0199デフォルトの名無しさん
NGNGだからぁ〜
aを10で割ると余りはどうなるよ?アレになるっしょ?そんな感じで...
0200デフォルトの名無しさん
NGNGなるほど!
ありがとうございました
0201119
NGNGfor文の継続条件ちょっと違うかも。でもこんなかんじだとおもわれ
char *hoge(int a)
{
static char str[256];
int i,j,k;
//桁拾い
for(i=0,j=a;j>0;i++,j/=10);
//代入
for(j=0,k=a;j<i;j++,k/=10) str[j]=k%10+'0';
return(str);
}
0205デフォルトの名無しさん
NGNG0206デフォルトの名無しさん
NGNGDQN
0207201
NGNG逝ってきます
0208デフォルトの名無しさん
NGNGオーバーフロウするかどうか判断できない方がDQN
0209201
NGNGもっかい逝ってきます
0211デフォルトの名無しさん
NGNG考え方がC-dog
終ってる
0212デフォルトの名無しさん
NGNGオーバーフロウってバッファオーバーフロウのことだよ。
0214デフォルトの名無しさん
NGNG0217デフォルトの名無しさん
NGNG255桁も10桁も逝くか逝かないかはintのビット数によるだろ。
0218155
NGNG0219208
NGNGC99?しらん
0221デフォルトの名無しさん
NGNG重箱の隅をつついてみただけだ。気にしないでくれ。
0224デフォルトの名無しさん
NGNG馬鹿だった・・・・
0225デフォルトの名無しさん
NGNG0226デフォルトの名無しさん
NGNGfseek (fp, 0, SEEK_END);
l = ftell (fp);
このコードってUNIX系でしか正しく動かないようなのですが
標準でファイルサイズを取得する方法はあるんですか?
0227デフォルトの名無しさん
NGNGWindowsでも正しく動くけど・・・
0228デフォルトの名無しさん
NGNGそうなんですか。
確かfseekにSEEK_ENDを指定したときはテキストモードでオープン
しないと動作は保証されないようなことを読んだことがあったので。
UNIXだとバイナリモードもテキストモードも同じなので"rb"でオープン
しても問題ないけど両方のモードが違ったときはまずいのかと思ってました。
0229デフォルトの名無しさん
NGNGじゃあバイナリモードで開けばいいでしょ・・・
0230デフォルトの名無しさん
NGNGいや、それだとだめってことなんですけど。
バイナリファイルの場合に。
0231デフォルトの名無しさん
NGNG0232デフォルトの名無しさん
NGNG「バイナリモードではfseekが正しく機能しない」?
とりあえず、、、
はつみみです
てか、困らない?
0233デフォルトの名無しさん
NGNG0234デフォルトの名無しさん
NGNGバイナリモードで「SEEK_ENDを指定した」場合です。
0235デフォルトの名無しさん
NGNG> 確かfseekにSEEK_ENDを指定したときはテキストモードでオープン
> しないと動作は保証されないようなことを読んだことがあったので。
0236デフォルトの名無しさん
NGNGSEEK_END ともう一つ別の方法でファイルサイズをとってみて、
食い違うっていう例を、自分のハードディスクの中でみつけてから
逝ってくれ
0237デフォルトの名無しさん
NGNGこれはいま検索したんですが今までもおかしいと思っていたので
複数あたっていました。
0238デフォルトの名無しさん
NGNGこの記述も俄かには信じがたいけど、「サポートしなくてもいい」って意味だよね
じゃあ、特定のライブラリの仕様を確認すればいいんじゃないの?
少なくとも、↓ここには変なことは書いてない
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_crt_fseek.asp
023916
NGNGまずはレスの中身を理解してからレスします。
(休日出勤です。すこし寝過ぎました。)
0240デフォルトの名無しさん
NGNG書籍でも「C言語によるプログラミング スーパーレファレンス版」と
あと一冊名前を忘れてしまった本にも載ってました。
いまwindowsでgccでやってみたら問題なかったです。
以前 linux で libc の fopen のソースを見たら確かにモードを区別
していなかったのでそっちでは安心して使っていたんですが。
0241デフォルトの名無しさん
NGNGもしサポートしてなければ、たぶんエラーコードを返したりすると思うから、
それをはじけば問題ないんじゃない。まあ、まったく出鱈目な結果になるという
恐れもあるが。。
0242デフォルトの名無しさん
NGNGstruct foo {
int member;
} foo;
とあるのをファイルに出力するときに、
foo f;
ptr = &f;
len = offsetof(f, member) + sizeof(int);
とやっているのがあるのですが、
これは、やっぱり構造体の padding を意識しているのでしょうか?(C FAQより)
とすると、メンバーを
struct foo {
int member;
long member2;
} foo;
と追加したときには、
ptr = &f;
len = offsetof(f, member) + sizeof(int) + sizeof(long);
とするのが正しいのでしょうか? それとも、
ptr = &f;
len = sizeof(struct foo);
とするのが正しいのでしょうか?
0243デフォルトの名無しさん
NGNG0244デフォルトの名無しさん
NGNGつまり、一番最後尾にあるかもしれない詰め物を、避けているってわけ?
だとすれば、member2が最後の要素なんだから、
ptr = &f;
len = offsetof(f, member2) + sizeof(f.member2);
こうじゃないの?最後の要素の末尾=全体の末尾
0245デフォルトの名無しさん
NGNG|member1|???|member2|???| (= f)
これを、ファイルの中では
|member1|???|member2|
これだけにしたいのでは?
0246explosion.cpp
NGNG#include <vcl.h>
#pragma hdrstop
#include "Explosion.h"
#include "global.h"
#include "RenderTex.h"
#include "debug.h"
#include "RenderSprite3.h"
#include "d3dutil.h"
#include "sndset.h"
#include "sndid.h"
#include "TexSet.h"
#include "particle.h"
#include "sub.h"
#include "debug.h"
USE_TR;
//---------------------------------------------------------------------------
#pragma package(smart_init)
0247explosion.cpp
NGNG// 爆発・抽象基本クラス
//---------------------------------------------------------------------------
// 爆発クラスへのCasterを返す (DeleteClass用)
//static
const LAppCaster<CExplosion>& CExplosion::Caster()
{ SV
static LAppCaster<CExplosion> c;
return c;
}
// cter, dter
CExplosion::CExplosion()
:CAppObj(g->appMan)
{ SV
}
CExplosion::~CExplosion()
{ SV
}
0248explosion.cpp
NGNG// 普通の爆発
//---------------------------------------------------------------------------
static const intTEX_NUM = 9, TEX_NX=999;
static const CPointTEX_POS(0, 0);
static const CSizeTEX_SIZE(54, 54);
static const floatANIM_TIME = FPS30*4.0f;
CNormalExplosion::CNormalExplosion(const CVector3& pos, float size)
:CExplosion(),
mTime(0.0f), mIndex(0)
{ SV
mSpr.pos = g->camera->Proj2D(pos, 640.0f, 480.0f,
P2D_CENTER|P2D_CENTER, TEX_SIZE.cx*size, TEX_SIZE.cy*size);
mSpr.scale = CVector2(size, size);
mSpr.tex = g->texBomb;
mSpr.rect = CRect(TEX_POS, TEX_SIZE);
g->renderSprite->Add(&mSpr);
0249デフォルトの名無しさん
NGNG0250explosion.cpp
NGNG{
float cr, cg, cb;
// 一定の確率で、真っ白の火花
if ( g->rand(100) < 10 )
cr = cg = cb = 1.0f;
else // それ以外は適当な色
cr=frand(0.7f,1.0f), cg=frand(0.7f,1.0f), cb=frand(0.0f,1.0f);
CParticle::New(pos,
1.5f, 0.4f,
CVector3(-15.0f, -15.0f, -15.0f), CVector3(+15.0f, 15.0f, 15.0f),
CVector3(1.0f, 1.0f, 1.0f),
CParticle::Tex(CParticle::WHITE), 0.5f,
cr, cg, cb
);
}
g->sysSnd->Play(SE_HIT01); // 爆発音
}
0251デフォルトの名無しさん
NGNGあーなるほど。最後の詰め物だけを除いているわけですか。
ふむふむ。そうかそうか。
ところで、こういうコーディングって一般的なんでしょうか?
いや、今回初めて見たんですけども、
最後の詰め物_だけ_を取ってる、ということは、
メンバーが増えれば増えるほどその意義は小さくなりますよね?
んー、やってることは分かったけど、
意図しているところが全然分からんちーん。
他の構造体では sizeof(struct bar) とかやってるし。
0252デフォルトの名無しさん
NGNGあまりよくないと思うけどね。面倒でも適切なバイト列に変換する
手続きを書いた方がいいかと
■ このスレッドは過去ログ倉庫に格納されています