- 1 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 12:49:22 ]
- C言語の入門者向け解説スレです。
・C++言語はスレ違いです。 ・分からない事をなるべく詳しく書いて下さい。 ・ソースコードを晒すと答えやすくなるかもしれません。 ・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。 前スレ C言語なら俺に聞け(入門篇) Part 22 pc11.2ch.net/test/read.cgi/tech/1196489491/ 教えて欲しいのではなく丸投げしたいならこちらへ C/C++の宿題を片付けます 101 pc11.2ch.net/test/read.cgi/tech/1197132472/
- 528 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 20:25:21 ]
- >>520 >>524
ありがとうございます! ということは int VER みたいなフラグを作っておいて使うんですね! #if 0 とか参考にしてたソースに出てきてわからなかったです ありがとうございました!
- 529 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 20:42:21 ]
- >>528
>int VER みたいなフラグ 駄目です、それじゃ使えません
- 530 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 20:46:59 ]
- >>523
*(int*)p それは参照先がアレじゃないか?
- 531 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 20:52:07 ]
- >>518
そのこぴぺされたコードで、コンパイルして実行できるか、もう一度確認してみてくれないか? ちなみにWindows?もしかしてDOS?
- 532 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 20:53:06 ]
- >>529
orz 使い方おしえてくだしあ
- 533 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 20:55:26 ]
- >>532
>>520 ただの置換だと思えばいい
- 534 名前:440 [2008/01/01(火) 21:01:52 ]
- viみたいなエディタ作るには
1人じゃ無理すかね?
- 535 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 21:03:12 ]
- >>532
プリプロセッサと呼ばれる機能なのだ。 #defineはマクロで、文字列の置き換え #define VAR 2 と書くと、今後ソースのVARは2という文字に置き換えられる。 #ifは条件付コンパイル。式が0でなければ有効となる。 #if VAR>1 と書くと、以下と同意になる。 #if 2>1 となって、式の結果は、1なので、有効となる。
- 536 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 21:03:21 ]
- viみたいなエディタなら無理じゃない
- 537 名前:440 [2008/01/01(火) 21:05:24 ]
- 画面上に色とかつけたりしてるのは、あれはC言語でやってるんすかね?
viで色とかが使えるすがスキームなど色文字を表示することは可?
- 538 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 21:06:45 ]
- >>537
DOSなら、エスケープシーケンスじゃないか?
- 539 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 21:14:13 ]
- WindowsならコンソールAPI
- 540 名前:440 [2008/01/01(火) 21:15:29 ]
- Linuxじゃ無理すか?
たしかにwindowsだと猫でもわかるC言語に書いてありましたが
- 541 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 21:18:55 ]
- 猫か…
- 542 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 21:21:45 ]
- >>540
linux エスケープシーケンス使えるよ printf("\033[31mhogehoge\n"); って感じで
- 543 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 21:25:50 ]
- VT100か
- 544 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 21:25:59 ]
- >440
ちょっとは自分の頭を使って集中して物を考えたり調べも伸したりする習慣をつけろよ
- 545 名前:440 [2008/01/01(火) 21:47:36 ]
- >>542
すげーっすね! できましたよ エスケープシーケンスで調べてきます >>544 以後気をつけます
- 546 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 00:02:28 ]
- >>523
左辺値にキャストはできないだろ?
- 547 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 09:04:56 ]
- >>546
これを実行してみてほしい #include<stdio.h> int main(void){ long num=1234; *((char*)&num)+=65536+256; printf("%ld\n", num); *((short*)&num)+=65536+256; printf("%ld\n", num); return 0; }
- 548 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 09:59:34 ]
- キャストしたものは左辺値じゃないけど、* をつけたから左辺値で通るんだよ。
- 549 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 22:28:47 ]
- #include <stdio.h>
#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;} これは何ですか?
- 550 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 23:13:44 ]
- たしかIOCCCのプログラム。別に何ってわけじゃない。
- 551 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 00:00:33 ]
- 頭が物故割れた
- 552 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 00:24:50 ]
- #include <stdio.h>
#include <string.h> int main(int argc, char *argv[]) { char *position, line[80]; FILE *fp; int counter=0, num, maxbuf=79; if ( argc == 1) {return 1;} fp= fopen(argv[ 1], "r"); if ( !fp) {return 1;} position= line; while ( fgets( line, maxbuf, fp)) { position= line; num= strlen(line); num-=4; while (( num > 0) && ( !memcmp( position, "goto", 4))) { position= position +3; ++counter; num-=3; ++position; --num; } } fclose( fp); printf( "%d goto \'s\n", counter); return 0; } たぶんこういうこと
- 553 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 00:40:09 ]
- まちがえた、・・・まぁいいか・・・
- 554 名前:デフォルトの名無しさん [2008/01/05(土) 01:12:12 ]
- Javaを半年ほどやってCを最近始めた素人です。
同じソースファイル内でも関数の定義位置が違うだけで、 コンパイラが、関数宣言ないよー。という警告をするのが、 いまいち慣れないのですが。 static宣言な、ファイル内スコープの関数なんかでも、 プロトタイプ宣言ってきちんとしたほうが良いのでしょうか。 手元にあるC言語入門だと、main関数を最後のほうに、 定型的な計算用の関数等を、頭のほうにもってきて、 プロトタイプ宣言を書かないようしているのですが、 皆様はどういった書き方をしておられるのでしょうか・・・。
- 555 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 01:14:41 ]
- >>554
基本的に、ソースファイルの書き方は一貫性が大事だと思っている。 だから、一貫性を持って読みやすければそれでOKだ。
- 556 名前:デフォルトの名無しさん [2008/01/05(土) 01:29:27 ]
- >>554
おぃ… どのportでaccessしろと云うのだ?
- 557 名前:デフォルトの名無しさん [2008/01/05(土) 01:51:07 ]
- www.microsoft.com/japan/msdn/vs/vcsharp/mth_lexicograp.aspx
から.msiインスコしたまではいいですが、ここからどうすればアプリとして起動できますか? よく分からないままMS Visual C#2008入れました。 最終的にやりたいのは、nCrで任意のnとrを最初に指定して、.txtファイルで1行毎に記述した多数の序数x(1≦x≦nCr)を組み合わせ化して別の.txtファイルにsaveすることです。
- 558 名前:デフォルトの名無しさん [2008/01/05(土) 02:09:33 ]
- 方向音痴な初心者です
因みに… '/usr/share/doc/man1/或.zg 個人の計算では恐らく'/usr/share/doc* 全てを読み込む様に為っていた筈…
- 559 名前:デフォルトの名無しさん [2008/01/05(土) 02:20:37 ]
- 最後の状態…
1・再起動がBIOSに到達せず再起動… 2・停止がBIOSに到達せず停止の筈が再起動… 3・RANを切らないと停止せず…
- 560 名前:デフォルトの名無しさん [2008/01/05(土) 02:25:06 ]
- 斯様に考えてもfile内に.pngを埋め込むのは無理と考えerror_fileを削除の末…
此の顛末…
- 561 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 02:31:08 ]
- 次の質問をどうぞ
- 562 名前:557 [2008/01/05(土) 02:42:49 ]
- see me(>>557) plz!
- 563 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 02:55:06 ]
- >>557>>562
ここはC#のスレではありませんよ
- 564 名前:557 [2008/01/05(土) 03:49:11 ]
- >>563
Spcially sorry, sir.
- 565 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 07:32:27 ]
- >>554
> 手元にあるC言語入門だと、main関数を最後のほうに、 > 定型的な計算用の関数等を、頭のほうにもってきて、 > プロトタイプ宣言を書かないようしているのですが、 > 皆様はどういった書き方をしておられるのでしょうか・・・。 基本的に読むときのことを考えて書く。 文章は上から下へ向かって読む。 だからプロトタイプ宣言も書いてmainの下に呼び出す関数を書く。 よく見るif (0 == a) みたいなやり方(=を書き間違えるミスを防ぐやつね) もバッドノウハウだと思う。
- 566 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 09:07:16 ]
- >>565
最後の2行は同意するが、関数をボトムアップで書くのは臨機応変でありだと思う。
- 567 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 10:07:08 ]
- >>565
> よく見るif (0 == a) みたいなやり方(=を書き間違えるミスを防ぐやつね) > もバッドノウハウだと思う。 なんで? 他にいい方法ある?
- 568 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 10:07:35 ]
- はい、次の質問どうぞ〜
- 569 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 10:14:55 ]
- >>565
>基本的に読むときのことを考えて書く。 >文章は上から下へ向かって読む。 >だからプロトタイプ宣言も書いてmainの下に呼び出す関数を書く。 うーん・・・微妙。 結局main関数がファイルの一番上に来るわけでもないし、 mainを最初に持ってきたからって可読性は上がらないと思う。 コード全体で一貫性があればケースバイケースどころか 趣味の範疇じゃない?
- 570 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 10:18:41 ]
- >>567
最近のコンパイラなら警告を出すはずだし、lintもある。 それに、 if (a = b) は防げない。 -Wall で出る警告をすべて潰すか、lintを使う習慣をつけたほうが良い。
- 571 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 10:19:25 ]
- Cに慣れると関数がボトムアップに並んでないと不自然に見えてくる。
- 572 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 10:32:24 ]
- >>555で終わってるネタ
- 573 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 10:32:49 ]
- >>569
おれは >>565に同意。 main関数を一番下に持ってくるのは、プロトタイプ宣言がなかった頃の 古い習慣を引きずってるだけだったはず。 >結局main関数がファイルの一番上に来るわけでもないし、 これはその通りだけど、プロトタイプ宣言を長々と書くことは少ないし、 たとえ長くなっても関数ブロックがどこから始まるかはすぐわかるので、 main関数が上にあるはうが見つけやすい。 あと、呼び出す関数の引数などを見たいとき、 プロトタイプ宣言が一箇所にまとまっているほうが見やすいと思う。 まあ、これはコーディングスタイルだから、強くは主張しないけど。
- 574 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 11:27:15 ]
- >>573
プロトタイプ宣言のなかった頃という実例を提示してくれ。 宣言がなかったら外部の関数は一切まともに呼べないと思うのだが。
- 575 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 11:28:40 ]
- > mainがどうとか
最近はフリーのでもエディタが強いからなぁ。 気にならなくなったし気にしなくなった。
- 576 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 13:31:36 ]
- 10個の配列に入っている数それぞれが
全て異なるってどういう風に書けばいいんでしょうか?
- 577 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 13:37:21 ]
- int array[10];
for (int ic = 0; ic < sizeof(array) / sizeof(* array); ++ic) array[ic] = ic;
- 578 名前:576 mailto:sage [2008/01/05(土) 13:45:39 ]
- 追記すいません。
10個の配列には既に数字が入っていて 条件式でかくならどうすればいいですかね?
- 579 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 13:58:18 ]
- ループでまわすか45個条件式書くか、好きなほうにしろよw
- 580 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 14:23:57 ]
- 無駄に再帰
int unique(int array, int n){ int i; if(n <= 1)return 1; for(i=1; i<n; ++i) if(array[0] == array[i]) return 0; return unique(array+1, n-1); }
- 581 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 14:29:42 ]
- 要素数intを再帰するのはちょっと勇気がいる。「スタックはもう0よ」に気をつけて。
- 582 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 14:34:42 ]
- 要素10個の配列を想定した再帰でスタックの心配とかw
- 583 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 14:35:36 ]
- >>581
そこで最近覚えた末尾再帰の最適化ですよ。
- 584 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 15:10:46 ]
- "入っている数"があまり大きくない数字(例えば0〜9999とか)なら、
配列(例なら10000要素)を用意して重複チェックするという手もある 10回ループすればわかる
- 585 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 15:56:01 ]
- ソート済み配列なら楽なんだがな
- 586 名前:576 mailto:sage [2008/01/05(土) 16:39:31 ]
- >>584ので
わかった気がします。 ありがとうございました
- 587 名前:584 mailto:sage [2008/01/05(土) 17:50:36 ]
- あぁ 577 にもヒントが
見落としていたよorz
- 588 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 17:59:25 ]
- mainなんて最後に読むから下にあったほうが邪魔にならなくていいな
- 589 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 00:48:37 ]
- mainから読まないと理解できない俺はorz
コメント豊富ならいいが、 そうでなければ順を追わないと分かりづらい……
- 590 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 00:56:00 ]
- どうせ上から下に綺麗に順に追って読めるわけじゃないから、どこにmainがあってもいいや
- 591 名前:554 mailto:sage [2008/01/06(日) 01:04:01 ]
- レス有難う御座いました。
結論としては>>555なのでしょうが。 自分はIDE使っていて、 >>573さんの様なスタイルがやりやすそうです。 コンソールでUnixプログラムとかを書ける様な方だと また意見も変わってくるんでしょうかね…。 >>571とかも参考になります。 皆様ご意見有難う御座いました。
- 592 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 04:10:09 ]
- すいません、超初心者なんですが判らなくなったので教えていただけませんか?
今アクセスカウンタを作ろうと思って、まずは簡単に動く物をテストで作ってみ ようかと思ってるのですが、思った動作をしてくれません・・ ipアドレスをゲットして、そのipアドレスから連続でアクセスがあった場合カウンタ が回らないようにしたいです。超初心者の自分なりに書いてみたのですが、同じipから のアクセスでもカウンタが回ってしまいます。ソースは #include <stdio.h> #include <unistd.h> #include <stdlib.h> main() { long i; FILE * fp; char *test,*ip,*count="count.dat",*addr="addr.dat"; test = getenv("REMOTE_ADDR"); fp = fopen(addr,"r+"); fgets(ip,30,fp); if(ip==test){ printf("test"); fclose(fp); }
- 593 名前:592 mailto:sage [2008/01/06(日) 04:11:42 ]
- else
{ fprintf(fp,test); fclose(fp); fp=fopen(count,"r+"); rewind(fp); fscanf(fp,"%6ld",&i); i++; rewind(fp); printf("Content-type: text/plain\n\n\0"); fprintf(fp,"%06ld",i); printf("%06ld",i); fclose(fp); } } こんな感じです。多分どっか物凄く適当な事をしてる部分があると思うのですが 自分ではぜんぜんそれがどこか判りません・・・ 誰か教えてください・・・
- 594 名前:592 mailto:sage [2008/01/06(日) 04:13:28 ]
- あー15行目の
printf("test"); はif文に入ったかどうかチェックする為に書いた物で意味はありません。
- 595 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 04:19:46 ]
- 基礎からやった方が良いと思うけど、とりあえず。
・ipは只の未初期化のポインタ ・文字列の比較は==ではしない
- 596 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 04:19:57 ]
- >>592
char* ip; で fgets(ip,30,fp); は臭う if(ip==test) ポインタ比較してどうする 文字列比較は strcmp (string.h) 全部読んでないが、ここら辺。
- 597 名前:592 mailto:sage [2008/01/06(日) 04:35:19 ]
- >>595-596
こんな時間なのに即レスありがとうございます。 もう少しポインタの勉強してきます・・・
- 598 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 04:42:36 ]
- ポインタの前に配列を
- 599 名前:592 mailto:sage [2008/01/06(日) 04:56:42 ]
- あぅあぅ・・
眠いせいか全く頭まわらず、未だ解決の糸口が掴めません・・今日はもう寝ます。 もしよかったら592の鳥頭でも判るcの初心者向け解説サイトなんかあったら教えていただけますか?orz よく寝て頭冴えてる時にもう1度チャレンジします。
- 600 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 05:09:17 ]
- >>599
ttp://www9.plala.or.jp/sgwr-t/
- 601 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 05:09:35 ]
- >>592
char *test,ip[128],*count="count.dat",*addr="addr.dat"; にして if(ip==test){ は #include <string.h> を追加して if(strcmp(ip, test) == 0)だな あと、printf("Content-type: text/plain\n\n\0"); の最後の\0は要らない サイトより、しっかりした一冊を読んだほうが為になると思う
- 602 名前:592 mailto:sage [2008/01/06(日) 05:55:21 ]
- 眠い目こすりながら"もうちょい・・もうちょい・・"ってやってたら出来ました!
600さん601さんありがとうです。ほぼ601さんの書き込み通りで出来ました。 else の後に rewind(fp); が無かったのでaddr.datが追加書き込みで上手く働かなかったのだけ なんとか自力で見つけて修正しました。ホント有難うです!
- 603 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 10:25:50 ]
- >>574
つ homepage3.nifty.com/ryuz/c/about_ansi.html >宣言がなかったら外部の関数は一切まともに呼べないと思うのだが。 外部の関数はextern宣言で呼ぶ。 古いソースを見ると、こんなのを見かける。 #ifdef __STDC__ int func(int arg1, char *arg2); #else int func() /* これが古いスタイル */ #endif 今はもう過去の遺物だが。
- 604 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 10:36:54 ]
- まだやんの
- 605 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 12:26:34 ]
- >>603
まさか、その「古いスタイル」という奴は宣言ではないとでも?
- 606 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 12:42:43 ]
- 昔はいきなり呼べたような。
そのためmath.hをインクルードしてないと引数がintになったりしてたような
- 607 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 12:45:03 ]
- 今でもいきなり呼べるよ
- 608 名前:603 mailto:sage [2008/01/06(日) 12:59:23 ]
- >>605
ごめん、間違えた。 #ifdef __STDC__ extern int func(int arg1, char *arg2); #else extern int func() /* これが古いスタイル */ #endif こうだった。
- 609 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 14:23:04 ]
- >>608
セミコロン要らないの?
- 610 名前:603 mailto:sage [2008/01/06(日) 15:20:15 ]
- >>609
もちろん要るorz
- 611 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 16:17:55 ]
- まだやってたのか。
>>605 とりあえず「プロトタイプ宣言」では無いと思う。 >>606-607 >引数がintになったりしてたような 戻り値とちゃうか? んで、暗黙の戻り値の型はC99でダメにならなかったっけ?
- 612 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 17:17:39 ]
- >>611
古い仕様やANSI非準拠の環境ならプロトタイプ宣言なくても関数呼び出しが可能。 戻り値は省略された場合intとみなす(これは確か規格) 引数はそこに関数呼び出しがあるならプロトタイプ宣言がなくとも予測できる。 int func();// ←プロトタイプ宣言 int a = func( 5, "hoge" ); と書かれていればfuncの引数が予測できる。
- 613 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 17:22:03 ]
- 予測も何も、そのままスタックに積んで取り出すだけでしょ
あってる限り問題は出ない
- 614 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 17:32:58 ]
- コール規則が複数あるような場合に嵌るだろ
- 615 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 17:47:37 ]
- プロトタイプを人間が確認してるようなもんだな
- 616 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 19:08:31 ]
- >>612
なんか色々とウサンクサイな・・・
- 617 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 20:50:50 ]
- まぁ、math.hをインクルードせずにprintf("%g\n", log(1))してみたまえ。いいもんだ。
- 618 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 21:04:47 ]
- %gってなんすか?教えてくだしあ
- 619 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 21:07:50 ]
- printfでぐぐれ
- 620 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 21:08:20 ]
- manコマンドしか見てなかったよ
- 621 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 21:09:06 ]
- ごめんうそ
- 622 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 21:21:22 ]
- 普通に、man printfしても出てくるでしょうが。
- 623 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 22:21:17 ]
- プロトタイプ宣言。
200〜300行程度のプログラムならなんとでもなるね。 問題は複数の Cファイルに分割しなければいけない時。 ファイル数が多くなり、extern 関数呼び出しが多くなった時 プロトタイプ宣言が有る場合と無い場合とではバグ出現回数が 大幅に違ってくる。 プロトタイプ宣言する事を癖にした方が良いよ。
- 624 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 22:22:41 ]
- ますます話が迷走を深めてまいりました
- 625 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 22:26:46 ]
- >ファイル数が多くなり、extern 関数呼び出しが多くなった時
>プロトタイプ宣言が有る場合と無い場合とではバグ出現回数が >大幅に違ってくる。 ソースキボン
- 626 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 22:42:32 ]
- >>625
プロトタイプ宣言がない場合、関数の引数の数と型を合わせるのはプログラマの責任になる。コンパイラはチェックしない。 ファイル間の膨大な数の関数と呼び出しで、それを完璧にやれる人はまずいない。
- 627 名前:623 mailto:sage [2008/01/07(月) 00:38:00 ]
- >>625
ソースなんてないよ。 実体験。 まだ経験してないのであれば...幸せなのか天才なのか、はたまた...
- 628 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 00:42:39 ]
- ソースが無いのにどうやって体験したんだとか勘違いした俺はどうすれば
|

|