2006年12月19日

んーと・・・これって一般的にはどう?

(例によって抽象的になりますwww)

他所の領域に格納されているデータを取得する関数Aがあります。
引数は、char* (要は文字列を取得するための配列を渡すということ)

戻り値がenumで定義されてて、OK、NG(NGにはいくつか種類がある)が返されます。
関数Aをコールした時点で、目的のデータが存在していないこともあるとき、

個人的な感覚としては、関数の戻り値が正常終了なら、引数で渡したポインタには期待した値が
格納されてる、と言う方が好みなんですけど
今、そうなってないから、戻り値がOKで且つ引数で渡した配列の[0]がNULLじゃないとき、
とか条件判定してるんだけど、”データが存在ない”ことを知るのに、「戻り値で、OKじゃない値を返してほしい」というのは変な要望ですかねぇ・・・orz(内部で仕様から作ってる、時の話で。)

関数Aが扱ってるデータに関しては、関数A自身にはデータの有無が判別できるハズだから
そのぐらいやってくれてもよさそうなのになあ・・・

(注:不満タラタラの状態でグダグダ書いているので、何のことだかわかんねえょ?というコトが
 あると思い居ますが、まあスルーしてくださいwww要は「王様の耳は~~~」ってヤツでしてw)

トラックバック

» Cのポインタ from Lunar Clock
またプログラム(C言語)のお話。 前回の記事やコメントで、 「NULLは0とは限らない」 っていう話題があったんで もう一回そんな記事を書いて... 続きを読む

コメント(6)

うーむ、最近自分で組んでないのであれですが、
関数使うとなるとフローチャートとか無いとダメですね。(^^; <僕が理解できなくなったって意味で

単純にif文とか付け足して・・・ってワケにもいかないんでしょうしねぇ。

よくわからないけど、ちょっと疑問に思った事が1つ。

>引数は、char*

>引数で渡した配列の[0]がNULLじゃないとき

…ってことは、引数はchar*じゃなくてchar**なのでは?
(もしくはchar* hoge[]みたいな記述でも同じですけど)

ん!?
もしかしてNULLって
ヌルポインタじゃなくてヌル文字(='\0')の事ですか?
ならchar*でOKですけど、"NULL"って普通ヌルポインタの場合にのみ使いませんか?
(まぁ、値としてはどちらも0なんですけど…)

(プログラムネタ大好き人間のたわごとなので適当に流して下さって結構ですw)

M^2さん>
<単純にif文とか付け足して・・・

や、実際のところはソレでいいんですけどね。
今回はたまたま、データがない場合は0x00で
埋められて戻ってくるから、if文付け足して状況
判別できるからそれでいいんだけど。。。って話で
ただ、それなら戻り値で”データが無い”
って言っても良かろうと(以下ループw)

りきぞ~さん>
えーと・・・NULLって書いたけど、
仕事場ではヌルポインタって使ってませんので
単純にデータの0x00を意図してます・・・(;´д`)ゞ

スミマセン、なのでchar *でいいんですわ。
(細かいこと言い出すと、charじゃなくてsigned charだったりするんですけどね・・・)

charとsigned charって何か違うんでしたっけ?

Cではあまり関係ないですが、
C++ですとcharとsigned charとunsigned charは
別物らしいです。

標準関数のstrcpy、とかを使うときにchar*なところにsigned charを指定すると、型が一致しなくてErrorになりました。(SHのコンパイラですがwだけ、というわけでは無いようです。)

なんと!知らなかった…。
勉強になります!!
c⌒っ*゚∀゚)っφ メモメモ...

コメントする