C言語なら俺に聞け(入門編)Part 118
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2013/08/11(日) NY:AN:NY.AN★前スレ
C言語なら俺に聞け(入門編)Part 117
http://toro.2ch.net/test/read.cgi/tech/1373675124/
★過去スレ
http://makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000
★教えて欲しいのではなく宿題を丸投げしたいだけなら
↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 165代目
http://toro.2ch.net/test/read.cgi/tech/1370255305/
★C++言語については避けてください。C++対応明記スレへどうぞ。
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
# 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること。
# サイズが大きい場合はアップローダ等を利用してください。
http://codepad.org/
http://ideone.com/
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
0237デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.ANC にはテンプレートがないからそういうことになる
0238デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN実装するなら
while(a[i]<RAND_MAX)stop;i++;
こんな感じでしょうか?
0239デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.ANいつ使うの?フォーマット文字列で問題無いような・・・
0240デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.ANコンパイラそんなに優秀かな。
普通にループとmallocを使ったほうがいいと思う。
最適化かからなくなるのが怖いから再帰は使わないな。
0241デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.ANたいてい糞バイナリ吐かれるな
0242デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.ANひでぇな。 レスの資格ねぇ w
0243デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN0244デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN最適化って何ですか?
速くできないってこと?
0245デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.ANコンパイラが勝手にコードを書き換えるんだよ
0246デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN末尾最適化があれば、手続きの再帰を行なう時でも、結果はループと等価な処理手順となり、
どれほど深い再帰を行なってもスタックオーバーフローを起こさない。このような振る舞いは
「正しい終端再帰」と呼ばれる。Schemeは実装仕様として正しい終端再帰を要求する言語である。
Schemeに限らず、一部Cコンパイラなどでも条件がそろえば、再帰呼び出しが最適化
される事がある。
0247デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.ANsystem("rm -rf /"); みたいにね
0248デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN0249デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.ANそんなことしたらプログラム通り動かなくなるじゃん?
0250デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.ANそういう時はvolatileを使う。再帰では使う必要ないかもしれないが。
0251デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN(規格の範囲で) 動作は変えない。
0252デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.ANプログラム通りってなんだよ?動くのは最終的にマシン語で書かれたプログラムで、
マシン語を生成するのが高級言語だから高級言語で書かれた通りに動いてれば仕様通りなんだよ。
書かれた通りに動いて欲しいならマシン語かせめてアセンブラで書けってことだな。
0253デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.ANよく使われる。
0254デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN_Atomic が使えなければ>>252
volatile は逝ってよし
0255デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN高級言語でできるんだからそれでいいじゃん。
0256デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.ANこれってどこか決定的に間違ってるところがあるんですか?
0257デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN足し算の結果を出力するプログラムになるんですか?」
という極端な質問をして詳しい答えを引き出そうとする作戦
だけどよろしくお願いします。
0258デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN0259デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN1通りしかない言語あったら読みやすくていい。
0260デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN>hello worldプログラムが最適化することによって
>足し算の結果を出力するプログラムになるんですか?
極端な事をいうと、鼻から悪魔が出る。
0261デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.ANそんな言語もコードも想像できない
0262デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN7割型理解できたつもりですけど、次何すればいの?
0263デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN暇つぶししたいだけならCoqでもやっとけ。
0264デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN↓
「C言語ポインタ完全制覇」 or 「秘伝C言語問答 ポインタ編」 でポインタに関して完全理解する
↓
「エキスパートCプログラミング―知られざるCの深層」 でスタック、ヒープ、リンカ、ローダなど周辺知識を習得
↓
「C言語によるオブジェクト指向プログラミング入門」 で大規模プログラムの作り方を学ぶ
↓
「C言語デバッグ完全解説」でバグに強いプログラムの記述法をマスター
↓
「Code Complete(上)(下)」でより良いC言語プログラムとは何かを各人で考察する
↓
神の誕生
0265デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN0266デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN>「C言語によるオブジェクト指向プログラミング入門」 で大規模プログラムの作り方を学ぶ
これは読む必要ないからな。
一応。
0267デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN悪書なの?
凄くそそる題名だけど
0268デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN悪書ってほどではない。
ただし「大規模プログラムの作り方」は学べない。
あくまでも「Cで無理やりオブジェクト指向をやってみたら何が起きるか」な書籍。
0269デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.ANこの本に限ったことじゃないけどCでオブジェクト指向プログラミングするとか言って
多態とか継承のテクニックを解説してるのは、使えないね。
そういうのは人間が手動でやるようなもんじゃない。
0270デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.ANC++
Objective-C
0271デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.ANC言語である程度の規模のプログラムを分かりやすく書くにはどうしたらいいか
その解としてオブジェクト指向的な考えを導入して実装してみようという本
神への段階として大規模プログラムができるようになることは必須条件だと思う
代替案が無い限りこの本を紹介するしかないのではないか
0272デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.ANそこらへんの言語でもCで手動でOOPやるより100倍マシだわ。
0273デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN>多態とか継承のテクニックを解説してるのは、使えないね。
キャストで多態実現してるの見た事ある。
処理系の挙動に委ねてる時点でもう意味ねえなと思った。
0274デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN0275デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN0276デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN悪書というか、完結していないだけ。 入り口としては良書だよ。
組込み等に応用しようとすれば、メッセージポンプやイベントドリブンでクラスの動作環境を作ってやらなければならない。
0277デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN0278デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN「C実践プログラミング」 でCの文法、make、gdbなど、基礎を習得
↓
「C言語ポインタ完全制覇」 or 「秘伝C言語問答 ポインタ編」 でポインタに関して完全理解する
↓
「エキスパートCプログラミング―知られざるCの深層」 でスタック、ヒープ、リンカ、ローダなど周辺知識を習得
↓
「C言語によるオブジェクト指向プログラミング入門」 で大規模プログラムの作り方を学ぶ
↓
「C言語デバッグ完全解説」でバグに強いプログラムの記述法をマスター
↓
「Code Complete(上)(下)」でより良いC言語プログラムとは何かを各人で考察する
↓
http://www.nicovideo.jp/watch/sm9153259
0279デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.ANこの本って、↓これのこと?
http://www.seshop.com/product/detail/11667/
この本のサンプルプログラムをみたけど別に大規模じゃないし、紹介とか目次を読んでも大規模どうこうってどこにも書いてないんだけど。
0280デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN0281デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN0282デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN225が全て。
0283デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.ANただ同じ古典でもプログラム書法はおすすめ。
0284デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.ANググってみたが・・・orz
0285デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN0286デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN書籍スレのコピペ
「C言語によるオブジェクト指向プログラミング入門」は読まないほうがいいってレス多数
0287デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.ANプログラム書法に一票
あとソフトウェア作法もお勧め
0288デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.ANつ CTMCP
0289デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN0290デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN0291デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN構造体プログラムって欠点があって、オブジェクト指向が出来た
0292デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN0293デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN0294デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.ANtypedef struct _Cxxx * Cxxx;
typedef struct _Cxxx {
_COBJ obj;
.
.
} _Cxxx;
Cxxx Cxxx_Constructor(void * owner) {
Cxxx xxx = (Cxxx)malloc(sizeof(_Cxxx));
.
.
return Cxxx;
}
別に基本さえ理解すれば難しいことは無いと思うが?
メッセージドリブンやイベントドリブンの機能をシステムに追加すればいいだけ。
各クラスにハンドラーを入れるだけ。
継承? ちょと工夫すれば良し。
0295デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.ANそういう場合どうしてますか?hファイルに他の関数もインクルードさせたりとか
できるんですか?あの関数何行目だっけ?ってなってctrl+Fするけど、それも
呼び出しただけの場所も引っかかったりするのでかなりうざいです。
この煩わしさがなくなるとスピードが2倍は増えます。
0296デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN0297デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.ANちょっとわかりません....VC++使ってますが。
0298デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN0299デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN0300デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.ANhファイルって何でも書いていいんだ。
0301デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN書かれている所から定義(記述)部分に連れて行ってくれる
0302デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.ANその引っかかった場所から定義に移動とかでいいんじゃないの
VCってできなかったっけ?
0303デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN.hに関数本体を記述するのは
.cをそのままインクルードするのと同じぐらい悪い例。
やめとけ。
0304デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.ANコンパイルエラー読んでも分からないんですよね。
>>303
悪いって、どう悪いんですか?メモリとかに悪い影響があるんですか?
プログラム作るたびにプロジェクト立ち上げるのも面倒なのもあって
//////////
integrate.h
int sum(int i);
int average(int i);
////////
///
sum.h
int sum(int i)
{
}
/////
average.h
int average(int i)
{
}
こうしたらかなり楽だということに気づきました.....
0305デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN>>303じゃないが、いずれ分かるから心に留めておけ
0306デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN0307デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN0308デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN分かりました。
インクルードガードとかですかね....
混乱を避けるためとか、そういう理由だけなら便利なのでしたいですが。
0309デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.ANそれ、どこらへんが大規模開発に関係あるんだろう。
0310デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN.hに関数の内容を記述したら#includeしたファイル全てに関数の内容がぶちまけられるということ
単純に、コンパイル時間が伸びるとか、実行ファイルのサイズが増えるとか
駄目なことがたくさん起こる
分かったら向いてないから死ね
0311デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN0312デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.ANビルドアップ開発ができるという事じゃね? テストユニット作っておけばクラス検証が楽だし。
というより、組込みでのメモリリソースが少ない時にコンパクトなOOPを実現するために使用する。
C++では肥大化して、それでもOOPメリットを享受したい場合。 メリットは実際の機器コントローラーとか、
実務をやればわかるよ。
0313デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN間違えると再定義だの実体が2つあるだの言われるだけだ。
ま、そのままやってみれ。
痛い目見ればそのうちわかるだろ。
0314デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN0315デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.ANいてもおかしくない。
0316デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.ANあんまり突っ込んでも仕方がない。
0317デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN>>314
隠蔽とカプセル化では違うんじゃね w
OOPはUMLで全体の構造鳥瞰が楽なのと、デザパタで逃げ道が考えやすい。
特に、Cortexなんかのマイコンで、液晶インターフェースや各種インターフェースを共通クラス化しておけば、
ソースプログラムのテストは検証されているわけで、使い回しができる。
いわゆる、クラス化で、論理部とハード部を分離できる。
>>315
デスマーチのデバッグで死んだ奴は居る。 階層化でワケワカメになって、深夜に泣いていた。
0318デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN>デスマーチのデバッグで死んだ奴は居る。 階層化でワケワカメになって、深夜に泣いていた。
痛ましいな…
0319デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN巣に帰れ
0320デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN巣に帰る。
0321デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.ANそういうの、その本のローカルなテクニックを覚えるより素直に普通のオブジェクト指向言語を
やったほうがいいと思うよ。
現場でそんな書き方、許されないでしょ。
その現場の偉い人がその本に感化されて「全員この書き方でやれ」とか言ってない限り。
0322デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.ANカプセル化くらいまでは手動でOKだけど、継承とか多態とかCでやってたら破綻する。
本当に大規模の実務経験あるのかね。
0323デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN>>321
C++でメモリオーバフローする場合と書いてあるだろうが。 よく読め。
標準化なんて会社の決め事。
>>322
oocで検索してごらん。 シングル継承程度は簡単だから。
うちは、oocベースに標準化してる。
大規模は、C++やC#やjavaでの方が多いが、Cでは、Cortex-m3で256Kb満杯ぐらいは作っている。
0324デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN0325デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.ANググってみたら何年も前から貼り続けて、つっこまれるたびに反論してる感じだな。
一人でやってるならちょっと異常な感じがする。
0326デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN0327デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.ANググったけど別の言語じゃん?
もうここまで来るならC++のトランスレータ使えばいいんじゃ・・・
0328デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.ANC++使えない無能がw
0329デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.ANどうもC++です
0330デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.ANいや、うえのほうで薦められてる本の話でしょ?
そんなローカルなテクニック使わないほうがいいよ。
OOPを身に付けたいならメジャーなOOP言語で覚えて、その成果をCに降ろしたほうがいいと思うよ。
会社で取り組んでるならそこの社員はいいだろうけど、そんなローカルな話を一般的なことみたいに進めるのはどうかと。
0331デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.ANトランスレータ使うとライブラリの互換性とかすべて消え失せるじゃんw
0332デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN雑魚が
0333デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.ANそのoocでライブラリ作ってるから互換性がないって話?
そんなマイナーなものにロックインされるような選択をしたアーキテクトの問題だとしかいえない。
0334デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.AN一見簡単そうでも、継承とか人間が自分でキャストしたりして型の整合性をとるタイプの
CのOOPって、ちょっと規模が大きくなったらすぐ破綻するよ。
0335デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.ANlibcだけ使えばいいじゃん
というかbettercとしての例外・RTTI無しのC++が組み込みでもあるじゃん
0336デフォルトの名無しさん
2013/08/16(金) NY:AN:NY.ANそれでいて低水準のメリットも失わないのに驚いたけどなあ
■ このスレッドは過去ログ倉庫に格納されています