お前らなんでもかんでもDEFINEすんじゃねぇ
■ このスレッドは過去ログ倉庫に格納されています
0001仕様書無しさん
NGNGしてあって、その定義みるとまたそこにDEFINEで定義したものがあって…
と、非常に可読性が悪い!
DEFINE房は自宅でフリーソフトでも作って満足しててください。
0002仕様書無しさん
NGNGつーか、数字直接うめてるのをあとで全部手で変更すること考えると
非常にウツ。
0003shige
NGNG0004仕様書無しさん
NGNG0005仕様書無しさん
NGNG0006仕様書無しさん
NGNG0007仕様書無しさん
NGNG0008仕様書無しさん
NGNG00091
NGNGおい、いねーのかよ、オレと同じ意見のヤツ!?
0010仕様書無しさん
NGNG0011仕様書無しさん
NGNG0012仕様書無しさん
NGNGそれで?
00131
NGNGでもよ、2重3重にdefineされてるとさ、もう追いかける気力も失せるわけ。
そんなソース書くんだったら、一生オマエが面倒みろっての。わかる?
0014仕様書無しさん
NGNG00151
NGNG0016仕様書無しさん
NGNG00171
NGNGじゃなくて、私が聞きたいのはですね。
そうやって幾層にもdefineで定義している人は、
なんでそういうコーディングをするのかを聞きたいんです。
可読性を下げる以上のメリットがあるならば、具体的にどんな
メリットがあるのかを教えて欲しいのです。
もうひとつ、defineされまくったソースを読むコツがあったら
教えてください。よろしくお願いします。
0018仕様書無しさん
NGNG00191
NGNG00211
NGNG>>20ええ、そんな感じでもっと複雑に定義されまくってるんです。
もう、イヤッ!と思うんですが、仕事ですので仕方ありません。
今回、仕様変更のための改修なのですが、ソースの解読に時間が
かかって本当にはかどりません。
0023仕様書無しさん
NGNGそのためのdefineなんだから。
0024仕様書無しさん
NGNG0025仕様書無しさん
NGNGたとえば
サーバ側のアプリである文字列長とdefineするとする。
そのサーバと通信するAPIもそのdefineはつかえるよな。
そのAPIを使うアプリでも文字列長を参照するときに,
サーバ,APIで使用しているヘッダを直接参照できない仕様のときなんかに
そのdefineを呼び出す形で使ったりするわけよ。
設計段階でモジュール化を心掛けているとこういうケースはままある。
なんてマジレス。
俺はこんな認識だけどいいかな?
煽りやツッコミもあればまた俺も勉強できるわけで,歓迎
0026仕様書無しさん
NGNG何だよ MAGIC って。。。コメントもないし。
こんなのもういやだ。。助けて。
0027仕様書無しさん
NGNG0028仕様書無しさん
NGNG検索すればすぐに分かる。
分からないのはお前が馬鹿かめんどくさがりだからだ。
0029仕様書無しさん
NGNG(val == 3? "084" \
:val == 14? "021" \
:val == 36? "029" \
:val == 51? "006" \
:val == 54? "077" \
:val == 68? "019" \
:"999")
0031仕様書無しさん
NGNGこんな書き方あったのか
ちょっと勉強になったな(w
0032仕様書無しさん
NGNGプリプロセッサで定義した文字列に置換されるだっけか?たしか。
詳しくはよーわからんが。
0033仕様書無しさん
NGNG0034仕様書無しさん
NGNG> そうやって幾層にもdefineで定義している人は、
> なんでそういうコーディングをするのかを聞きたいんです。
一見きれいなソースに見せかけて、他人には容易に
解読できないようにするためだと思っている。
多層define以外の方法で可読性を落とすと、
他人にはコーディングセンスを疑われてしまうからな。
0035仕様書無しさん
NGNG緻密にマクロが絡み合ってるようだが。
可読性を落としてわからなくさせてるのかな?これも。
0037仕様書無しさん
NGNG自分でdefine切って,何箇所も使った後,
以前のソースに同じdefineが見つかるという罠。
わざわざ全部なおすのは面倒だからな(w
0038仕様書無しさん
NGNG0039仕様書無しさん
NGNG0042仕様書無しさん
NGNG教科書のCしか知らない新人に万単位のソース読ませると、たいていそこで混乱してる。
自分はtagとgrepを駆使するようになってからあまり悩まなくなったけど。
0043仕様書無しさん
NGNG004442
NGNGでもコード書いてる本人は楽なのかな。
理由は忘れたけど、リストの処理なんかCで書くとき、気が付いたらtypedefするように
なってた。データ構造に関するコメントかドキュメントをちゃんと書けば許容範囲と思う。
0045仕様書無しさん
NGNG実際、typedef struct … だけはやった方がいい。
それ以外では俺は意地でもtypedefは使わん。
0046仕様書無しさん
NGNG#define NUMBER_TWO 2
#define NUMBER_THREE 3
004942
NGNG自分はstructをtypedefするとき、気が付いたら手が勝手にこう動く:
typedef struct _hoge { /* _は付けない場合もある。 */
/* ... */
} hoge;
新人を相手にしてると、データ構造の説明が雑なコードで、やたらそれやると、
やっぱ混乱を招く。"Expert C Programming"は反対派で、某藤原氏は賛成派。
0050仕様書無しさん
NGNG#define end }
0051仕様書無しさん
NGNGCプログラミング専門過程ですか?
Expert C Programmingの方は知らんが。
0052仕様書無しさん
NGNG005342&51
NGNG> Cプログラミング専門過程ですか?
そーです。7章あたりかな。
0054仕様書無しさん
NGNGint b = 2;
int c = 3;
#define a a + b
#define b a + b
#define c b
#define d a + b + c
printf("%d", d);
こんなんでも通すプリコンパイラの仕様がいやだ。
005653&51...
NGNG0057仕様書無しさん
NGNG多段をやたらに多用しているというなら、
なんでもグローバル変数にする奴と同程度の
話だと思うがどうか。
基本的な話としては、マクロは、できるかぎり
多段にしないのが礼儀だと思っている。
# define道を極めた人なら別かもしれませんが。
まぁ、使いやすくて、資料なりちゃんと
していれば、さほど問題視しなくても良いと思う。
# 理屈よりも何よりも便利なら ALL OK派。
逆に不便ならゴミってことで。
0059仕様書無しさん
NGNG0060仕様書無しさん
NGNG昔のC/C++は #define のネストを
プリプロセッサは基本的にサポートしないから
エラーになった、と聞いたことがある気がするが
嘘でしょうか?
ちなみに、昔というとどれくらい前の話です?
0061仕様書無しさん
NGNGとりあえず理由は?
006253&51...
NGNGうんにゃ。シラフのときは寝坊以外のミスは少ないよ。(w
006462
NGNGでも、コード書くときは、そのテのミスは少ないけど、仕様書を書いた後とか、
表や図の番号と章とかセクションの番号が合致してない、とかのミスは他の人に
比べて多い。なので貴方の指摘は結構正しいです。(w
ちなみに今ビール2リットル逝ってます。っていうかもう寝ます。
0065仕様書無しさん
NGNG0066仕様書無しさん
NGNG#define MAX_ABC 10
def.h
#include "abc.h"
#define MAX_DEF MAX_ABC
ghi.h
#include "def.h"
#define MAX_GHI MAX_DEF
hage.c
#include "ghi.h"
for(i=0; i<MAX_GHI; i++)
printf("hage\n");
よくやってます。
MAX_GHIの中身が知りたければ3回grepしてください。
0067仕様書無しさん
NGNGそうすりゃ普通のオブジェクトと同じスキームで管理できる。
0068仕様書無しさん
NGNG整数の定義にはタグ付きの enum を使え、とあれほどクドクドクド…
0069仕様書無しさん
NGNG0070仕様書無しさん
NGNG0071仕様書無しさん
NGNG「なにこの大文字の関数」みたいな。
0072仕様書無しさん
NGNGDSPチップのシミュレータ開発時に、呼び出しコストを抑えるためにやったことはある。
0074仕様書無しさん
NGNG#define RIV "02"
printf("Version = %s.%s", VER, RIV);
なんてありがちだべな
0075仕様書無しさん
NGNGなんでそんないやがらせを…?
0077仕様書無しさん
NGNG単にGrepすればいいだけ
そのくらい仕事だろ
0078仕様書無しさん
NGNG確かに。
0080仕様書無しさん
NGNGGrepでなんとかなるのは小規模のプロジェクトだけ。
多層defineが多いってことはモジュール間結合度が強いからそうなるんだよ。
むしろ多層defineしなきゃならない設計の方に問題があって見にくいんだ。
0081ネカマPG ◆IPLoveoQ
NGNG何のためのシンボル定義なのかわからないわ。
でも多段の定義は(論理的な意味がなければ)
可能なら避けた方がいいのは確かね。
あと、定数はdefineよりenumの方がデバッガでのデバッグ時に嬉しいわ。
0082仕様書無しさん
NGNGCでオブジェクト指向もどき
0084仕様書無しさん
NGNGしかしながら、定数の管理の問題は、OOPで解けぬものかのう。
定数管理オブジェクトあたりはまあまあとは思うものの。
0086仕様書無しさん
NGNG定数って実装の一部だから、OOPの配慮から確実に漏れる。
OOPは「仕様は仕様 実装は実装」の問わず語りだから、、、
だから人間の理性と良心でやるしか、ねーんだろうな。
0087仕様書無しさん
NGNG#define end }
これ最強。
0089仕様書無しさん
NGNGすみません、理解できません。
いや、煽りじゃなくマジで。
よろしければ解説キボンヌ。
0090仕様書無しさん
NGNG0091shige
NGNGgccの-Eオプションは、コンパイル/アセンブルを行わずプリプロセスのみ行う。
マクロがどのように展開されるかを確認するときとか。
ただ、出力が読みにくいからRubyスクリプトあたりでもう一段フィルタ梭子魚。
Rubysaikyo−!
0093shige
NGNGうぇついcf67348お
っっっっっっっっっっっっっr
91は無視してください
貴様とオレとは同期のRubyist!
RubyRubyRubyRubyRubyRubyRubyRubyRuby
RubyRubyRubyRubyRubyRubyRubyRubyRuby
RubyRubyRubyRubyRubyRubyRubyRubyRuby
0094仕様書無しさん
NGNG0095仕様書無しさん
NGNG0096仕様書無しさん
NGNGんなもんgccつかってないとわかるわけねーやん
(なんとなくそのあたりだろうとは思ったけど)
0098仕様書無しさん
NGNG0099帰る場所があるヤシはまだいい
NGNGそろそろ帰ろうっと。
0100仕様書無しさん
NGNG0101仕様書無しさん
NGNG0102仕様書無しさん
NGNG0104仕様書無しさん
NGNG0105仕様書無しさん
NGNG仕様貰ってきて一から書き直せ。
0106N88BASIC
NGNG全部文字列あつかいかよ!
0109仕様書無しさん
NGNG0111仕様書無しさん
NGNG#define A Afo
#define B ka
#define Afoka A##B
0113仕様書無しさん
NGNG# ifdef _かんたら
# if うんたら && こんたら
DYNLOAD_FUNCTION int uhehehe ARGS((int got, char *it))
# else
…
こういうのは勘弁してほしいっす。
0114仕様書無しさん
NGNG0115仕様書無しさん
NGNG0116仕様書無しさん
NGNGマクロはできるだけ使うな、定数はenumで、処理は
関数で書けとあるようですが。
0117仕様書無しさん
NGNG0119仕様書無しさん
NGNGあれば使うけど、無くても全然困らない。
0121仕様書無しさん
NGNGソース読んでても、どこの関数が呼ばれてんだか全然分かりません。。。
いや、デバッガで追えばいいだけなんですけどね。。。
0123仕様書無しさん
NGNGなんかね? イパーイあるヨ? 関数ポインタ?(TдT)
ここ一番がイパーイ?
一行空けたのは何となくデス。深い意味はアリマセン...
0124仕様書無しさん
NGNGCでポリモフィズムを無理矢理実現しようと…
0126仕様書無しさん
NGNG#define offsetof(T, F) ((unsigned long)&(((T *)0)->F))
#define numberof(V) ((unsigned long)(sizeof(V) / sizeof(*V)))
だけはプリプロセッサでないと…
0127仕様書無しさん
NGNG0128名無しさん@カラアゲうまうま
NGNG#define THE_NUMBER_WHICH_IS_NORMALLY_USED_TO_INCREMENT_VARIABLE 1
#define THE_NUMBER_WHICH_IS_NORMALLY_USED_TO_HALVE_SOMETHING 2
...
0129仕様書無しさん
NGNG状態遷移やテーブルジャンプするとき便利〜。
0130仕様書無しさん
NGNGアホが多いのか?
0131仕様書無しさん
NGNG他人の書いた詳細設計書だけですべて理解できると思うのか?
0132仕様書無しさん
NGNGmain()
{
printf("%sですか?\n", HISAN_NA_1);
}
実行結果:
悲惨な1が居るスレですか?
0133仕様書無しさん
NGNG0135仕様書無しさん
NGNGだからレビューするんじゃん。
0136仕様書無しさん
NGNG元担当者がすべてを抱え込んだまま逃げたことないんですね。
0137仕様書無しさん
NGNG0138仕様書無しさん
NGNG0139仕様書無しさん
NGNG担当者が逃げちゃうようなDQNな会社にいないもので。。
0141仕様書無しさん
NGNG0143仕様書無しさん
NGNG何故!?
0144仕様書無しさん
NGNG某コンパイラのヘッダーファイルとか。
0145仕様書無しさん
NGNG何故?
0147仕様書無しさん
NGNG0148仕様書無しさん
NGNG痛すぎるよ・・・
0149仕様書無しさん
NGNGunsigned intをuintとかにするのはわかる。
でも構造体にはタグ名ってものがあるだろ?
0150仕様書無しさん
NGNGで、構造体をtypedefしたら何か不都合あるの?
0152仕様書無しさん
NGNGタグ名?あんなものは飾りですよ、偉い人にはそれがわからんのです
0153仕様書無しさん
NGNG構造体だとすぐに分る必要ってのがないような気がするが。
弄るときにはメンバ指定するので構造体だとわかるし。
0154仕様書無しさん
NGNG0155仕様書無しさん
NGNG>構造体だとすぐに分かって良い
なんで?構造体になんかウラミでもあるのか?
0156仕様書無しさん
NGNG0157仕様書無しさん
NGNG標準ライブラリではしているものもあればしていないものもあるけど、どうやってするかどうか決めたんだろ。
0158157
NGNG0159あぼーん
NGNG0160仕様書無しさん
NGNGそういうのを“利用者側が”意識してstructつけたりつけなかったり判断する必要があるのは嫌なので、
全部typedefするようにしてる。
0161仕様書無しさん
NGNG配列を typedef するのはやめてほしい。
こんなの
typedef int hoge[ 10 ] ;
int * func( hoge a )
{
...
return a ;
}
とか
int ( func( hoge a ) )[ 10 ]
{
...
return a ;
}
とか
しかも基幹になっているライブラリ
たすけて〜
0162くらすちゃん
NGNGやつも所詮コンストラクタで構築されデストラクタで破壊されるのさ。
0163仕様書無しさん
NGNG>>161
typedef int hoge[10]
を他の言い方で言うのって難しくない?
そのうちhoge構造体を作るとヨシ。
コンパイラと相談しながら作ってる奴は時々こう言うコード書く。
たぶん、最初は
int hoge[10];
って宣言してたんじゃないかなぁ。
0164仕様書無しさん
NGNG新人教育の際には、反面教師として、自分のソースを見せて悪いとこを教えている。
転んでもタダではおきん!
0165名無しさん@カラアゲうまうま
NGNG...;
} hoge;
とかやってる私はdqnすか??
0166仕様書無しさん
NGNGそれ、海外のフリーソフトとかによくあるね。
0168仕様書無しさん
NGNG鬱にもなろうってもんでしょうけど、昔のだったら大丈夫じゃない?
若気の至りってことで。違うか。
0169164
NGNGクソミソに言えるならコーディングについてちょっとは考えてる証拠。
つか、悪いとこを言葉で言ってもわからないから、悪い手本を見せるのもいいじゃん。
現在は、違うんだし
0170仕様書無し
NGNG関数で作った方がいいものまでDEFINEで定義するのだけはやめようよ。
ソース追うのに疲れたよ。
0171仕様書無しさん
NGNG何の意味があるの?まじで
0172165
NGNGtypedef struct _hoge {
struct _hoge* next;
...;
} hoge;
0174仕様書無しさん
NGNGタグジャンプも出来ない糞エディタ使ってんだろうな。。。
0175仕様書無しさん
NGNG0176仕様書無しさん
NGNGこないだ某携帯開発メーカーで「マクロについてのコーディング規定は立てないのですか?」と
聞いたら「マクロって何?」と言われた。
色々あるけど、とりあえずdefineの記述がこれまでむちゃくちゃだったので、defineについて指摘したら
「デファイン?マクロの話をしているんじゃないのですか。デファインはみんな知っているのでマクロについて説明してください」
と言われた。
C言語経験8年とか10年とかの人いっぱいいて・・・一瞬俺が間違っているのかと思ったYO!
0178( _。。)_ バタ。 ◆lUd9keO2
NGNG疑いようも無くマクロだ。
ただ#define ディレクティブはC言語用語ですけど、
マクロっていうともっと意味が深いし広いですが、
とりあえず176さんは間違ってないと私は思います。
0180仕様書無しさん
NGNG素人にはお勧めできない。
0181仕様書無しさん
NGNG//ユ-ワク(・∀・)イイ!
0184172
NGNG0185仕様書無しさん
NGNG0186仕様書無しさん
NGNGお前、それコンパイル通らねえだろうが。初心者か?
0187仕様書無しさん
NGNG0189仕様書無しさん
NGNG口出しをできなくする。
0191183
NGNGhoge *next;
...;
};
すまんこっちで。
0192仕様書無しさん
NGNG(書ける処理系もあるらしいけど)
0195仕様書無しさん
NGNG読みやすい。たまたま読みやすいソースだったのかもしれんが、
何をやっているのかが簡単にわかる。
やはりdefineのし過ぎはソースが読みにくくなる原因だなと、再認識した。
所詮defineしまくりは自己満足。
0196仕様書無しさん
NGNGグローバルconstな定数だろ
0197仕様書無しさん
NGNG#define 4 3
0199仕様書無しさん
NGNG0200仕様書無しさん
NGNG0201仕様書無しさん
NGNG0202仕様書無しさん
NGNGええ!いいとおもうけどなぁ。同じフォーマットあちこちで使うときなんか。
0204仕様書無しさん
NGNG可読性が落ちるだけ。最高にセンスが悪いと思う。
0205仕様書無しさん
NGNG実際どこまでだったら可読性の面からOKでどこからがNGなわけよ、
そこらへんを駆け出しペーペーの私に教えていただけませんか。
ちなみに自分は>>201はOKだと思います。
0207201
NGNGとかやられてるんだが、SQLによる操作が不安定って言われた時に、
defineされてるフォーマット(ヘッダに書かれてる)と、SQL生成してる
部分のコード両方参照しないといけなくて面倒じゃないか?
0209仕様書無しさん
NGNGデバッガでsqlの中身を見ればいいだけ
sql文があちこちのコードにあるとカラム名やテーブル名が変更されたとき
あちこち修正しなければならなくなり、その方が面倒。
0210デフォルトの名無しさん
NGNG問題はネストした方が「それっぽい」とか勘違いしてる
房の存在だべ。
必然性のないものを持ち込まれたときの被害は、Cや
C++においてはかなり大きいと思われます。
0211仕様書無しさん
NGNG> ちゅうかお前ら可読性可読性って言うけどよ、
> 実際どこまでだったら可読性の面からOKでどこからがNGなわけよ、
3年後に自分の書いたソースを読んで何をやっているか理解できたらOK
理解できなかったらNG
# 他人に読ませてみてもOK
0212仕様書無しさん
NGNG>sprintf(sql, SELECT_FMT, hoge, hage...);
おれはSQLハードコードされてる方がよほど鬱だぞ。もちろん SELECT_FMTなんちゅう
名前でないことが前提だが。ま、むしろviewちゃんと作れよ、ってのが先だな。
0214仕様書無しさん
NGNG#define TIME_sdsd_dd_ddd "%s, %d %s %d %d/%d %02d:%02d:%02d"
くらいの定義をしておかないと、わけわかんなくなるぞ。
0216仕様書無しさん
NGNG> #define TIME_sdsd_dd_ddd "%s, %d %s %d %d/%d %02d:%02d:%02d"
プッ、君は名前の付け方が下手だね。だから一々定義を見る羽目になる。
0217仕様書無しさん
NGNG命名規約なんつー話もまじって鬱。
0218仕様書無しさん
NGNGだったらどんな名前の付け方すんだゴルァ
0219仕様書無しさん
NGNG例えば02/07/17 21:09と出力したい場合
#define TIME_YYMMDD_hhmmss "%02d/%02d/%02d %02d:%02d"
とか。
でも、素人ならともかく普通のC使いは日付フォーマットは
sprintf()ではなくstrftime()を使う。
0220仕様書無しさん
NGNG...;
}
こんなコードがあった。なんのためのマクロだ。
0221まちがってます
NGNG0223仕様書無しさん
NGNGこれ最強。
0224デフォルトの名無しさん
NGNG思ったソースはなんですか?
0225仕様書無しさん
NGNGint main( int argc, char *argv[] ){
main2( argc, argv );
}
// 当然 "special.h" 内は地獄..
0226仕様書無しさん
NGNG0228仕様書無しさん
NGNG0229仕様書無しさん
NGNGコレをなんの為に使うかがわからない奴は氏ね
0230仕様書無しさん
NGNG0232230
NGNG0233名無しさん@XEmacs
NGNG#define DD_FRONT_LEFT_BIT FRONT_LEFT_BIT /* 1 */
#define DD_FRONT_RIGHT_BIT FRONT_RIGHT_BIT /* 2 */
#define DD_BACK_LEFT_BIT BACK_LEFT_BIT /* 4 */
#define DD_BACK_RIGHT_BIT BACK_RIGHT_BIT /* 8 */
#define DD_DEPTH_BIT GL_DEPTH_BUFFER_BIT /* 0x00000100 */
#define DD_STENCIL_BIT GL_STENCIL_BUFFER_BIT /* 0x00000400 */
#define DD_ACCUM_BIT GL_ACCUM_BUFFER_BIT /* 0x00000200 */
XFree86 4.1.0 ソースより
0234仕様書無しさん
NGNG何の為に??
0235仕様書無しさん
NGNG0236名無しさん@XEmacs
NGNG1985年の Obfuscated
#define p struct c
#define q struct b
#define h a->a
#define i a->b
#define e i->c
#define o a=(*b->a)(b->b,b->c)
#define s return a;}q*
#define n (d,b)p*b;{q*a;p*c;
#define z(t)(t*)malloc(sizeof(t))
q{int a;p{q*(*a)();int b;p*c;}*b;};q*u n a=z(q);h=d;i=z(p);i->a=u;i->b=d+1;s
v n c=b;do o,b=i;while(!(h%d));i=c;i->a=v;i->b=d;e=b;s
w n o;c=i;i=b;i->a=w;e=z(p);e->a=v;e->b=h;e->c=c;s
t n for(;;)o,main(-h),b=i;}main(b){p*a;if(b>0)a=z(p),h=w,a->c=z(p),a->c->a=u,
a->c->b=2,t(0,a);putchar(b?main(b/2),-b%2+'0':10);}
0237仕様書無しさん
NGNGswitch (type) {
do {
case 0: nx = Hoge1(); break;
case 1: nx = Hoge2(); break;
case 2: nx = Hoge3(); break;
} while (0);
case 3: nx = -1; break;
default: nx = type - 2;
}
目を覆わんばかりに奇麗だ。
0238仕様書無しさん
NGNGdo{
..........
}while(0);
って、なんの意味があるの?
0239仕様書無しさん
NGNGswitch (type) {
do {
case 0: nx = Hoge1(); break;
case 1: nx = Hoge2(); break;
case 2: nx = Hoge3(); break;
} while (0);
Nyo(nx); break;
case 3:
Nyo(-1); break;
default:
Nyo(type - 2);
}
0240仕様書無しさん
NGNG0241仕様書無しさん
NGNGcout<<dejico(HAXAHAXA)<<" "<<usada(HAXAHAXA)<<endl;
0243230
NGNG0244仕様書無しさん
NGNGって、
{...}
でもいいような気がするのだけど。
最後にセミコロンをつけられるのが嫌なんかな?
0245仕様書無しさん
NGNGdefine以降は、出鱈目にキーボード叩いたんですよね?
0247仕様書無しさん
NGNGpiyoじゃないの?
0248仕様書無しさん
NGNG他の物を持ってくる、という発想が気持ち悪い…。
つーか、変数の型きぼん。
bool flag=true;
int nx;
int Hoge1(int i);
int Nyo(int i);
if(flag){
switch (type) {
case 0: nx = Hoge1(); break;
case 1: nx = Hoge2(); break;
case 2: nx = Hoge3(); break;
case 3: Nyo(-1); break;
default: Nyo(type - 2);break;
}
flag=false;
}
else{
switch (type){
case 3: Nyo(-1); break;
default: Nyo(type - 2); break;
}
}
と結果一緒?
Nyo(nx); break;
がいつ実行されるのかがわからんのですが。
Nyoの中身が特別なのかな。
0249仕様書無しさん
NGNGint type;
int Hoge1(int i);
void Nyo(int i);
if(flag){
switch (type) {
case 0: Nyo(Hoge1()); break;
case 1: Nyo(Hoge2()); break;
case 2: Nyo(Hoge3()); break;
case 3: Nyo(-1); break;
default: Nyo(type - 2);break;
}
flag=false;
}
else{
switch (type){
case 3: Nyo(-1); break;
default: Nyo(type - 2); break;
}
}
こうか。
0251仕様書無しさん
NGNGん?
何がしたいのかよくわからないのは同意するが。
0252仕様書無しさん
NGNGなにも書いてない=処理がないのかと思ったが。省略してたのかな。
それにしても、
「読みづらかったので、わかりやすく書き換えました」とか言われて
こんなの書かれてたら泣きたくなるよ…。
0253仕様書無しさん
NGNG一回if文を読むと残りはelseってしたかったんだけど。
0254仕様書無しさん
NGNG勝手に補足。
flagはstaticだから一度この関数を通るとflagはfalseのままになるよね、ってこと。
こーゆーのって二つの関数に分けて呼び出し側で呼び分けるのが普通だよね。
0258仕様書無しさん
NGNGだからって、なんでもかんでもオレにおしつけるんじゃねぇ
0259仕様書無しさん
NGNG正直なんで構造体をtypedefする必要があるかログをみた限りでは分からんかった。
typedefしたほうが良いのか悪いのかの結論もよくわからん・・・
痛い奴と言われるのは覚悟の上だ。教えてくれ。
ttp://www.google.com/search?num=50&lr=lang_ja&q=typedef%20理由
これの二番目のサイトみたがK&Rに何か書いてあるのか?
0260仕様書無しさん
NGNG0261仕様書無しさん
NGNG後藤泣いちゃうよー
0262仕様書無しさん
NGNGこういうの↓も多いね。
#define blank " "
#define blank2 " "
#define blank3 " "
で
if (strcmp(buf,blank2)==0) {
とかやってる。
Cプルグラマならisblankstr()みたいのを作れと言いたい。
きいとるかねみかかの諸君。
ところでもっとすごいヤシないの?
0264仕様書無しさん
NGNG変数typeはintじゃないかもしれんけど。
int get_nx(int type) {
int nx;
switch (type) {
case 0: nx = Hoge1(); break;
case 1: nx = Hoge2(); break;
case 2: nx = Hoge3(); break;
case 3: nx = -1; break;
default: nx = type - 2; break;
}
return nx;
}
で上ではこう。
Nyo(get_nx(type));
0265264
NGNG■ このスレッドは過去ログ倉庫に格納されています