C言語なら、俺に聞け! <19>

このエントリーをはてなブックマークに追加
952C言語:02/05/15 22:05
分割コンパイル、make使い始めたのですが
外部変数の定義、再定義ファイルをそれぞれ作ってインクルードするのと
#ifndefを使って再定義をするのとどっちがかっこいいですか
プロフェッショナルな方の意見をお聞かせ下さい
初心者の質問で恐縮です。
>>952
再定義?
変数の定義は一度しか出来ません。
宣言と定義のことだったらC FAQ嫁姑。
954C言語:02/05/15 22:16
>>953
外部変数dす
ひとつのファイルには
#define MAX 40
float A[MAX];
ってやって残りのファイルには
#define MAX 40
extern float A[MAX];
ってやりたいってことです。
ヘッダファイルに extern float A[MAX]; と書き、それをインクルードする .c ファイルのひとつに float A[MAX]; と書く。
956C言語:02/05/15 22:26
>>955
#ifndefを使うのとどっちがオススメですか?
957デフォルトの名無しさん:02/05/15 22:26
>>956
ゴルァ!!
>>956
どう使うつもりなの?
959C言語:02/05/15 22:29
>>957
わかりません
960C言語:02/05/15 22:31
>>958
こんな感じです
- sample.h -
#ifndef _sample_h
#define _sample_h
int x;
#else
extern int x;
#endief
>>960
ヘッダーファイルの中じゃなくて、.cファイルの中で宣言しろって。
962C言語:02/05/15 22:39
>>961
わかりました、そうします。
ありがとうございました。
#ifdef EXTRN
#define EXTERN extern
#else
#define EXTERN
#endif

とやり、すべての外部変数にEXTERNとつけておく。
main()のあるファイル(本当はどれか一つならよいが)に
#define EXTRN
と書く。
964デフォルトの名無しさん:02/05/15 23:05
今日はじめて関数ポインタというものを知ったのですが、こりゃやみつきになりますね!
>>964
C言語でもクラスごっこが出来る。w
しかし、時代は関数ポインタを異端だとし始めている罠。
966デフォルトの名無しさん:02/05/15 23:08
あと、C++初めて2年になるのですが、今日初めてexternの効果を知りました!こりゃ感動しますね!
いままでの僕がアホみたいに思えました!なにしろ別のファイルから別のファイルの変数にアクセスする方法を知らなかったのですから!
クラスから他のクラスを参照するときなんて、いちいちSetメソッド作ってポインタをメンバに保存してたんですよ!
あーもう!
>>964
その勢いでC++の仮想関数を学習してしまうとよい罠。
>>966
一歩間違うと収集付かなくなるぞ。
>>967
割り込みベクタみたいなテーブルがあるんでしたっけ?確か。
970デフォルトの名無しさん:02/05/15 23:10
>967
いやあ。。オブジェクト指向はほとんど学習しましたよ。当然ポリモも。しかし本当に僕は基本的なところができてなかったんですねえ。
>>970
いや、知らない方が良かった、という事も。(汗
972デフォルトの名無しさん:02/05/15 23:19
>>966
で、ポインタと配列は同じもの、という誤解のもとに
a.c:
int a[10];

b.c:
extern int *a;

とやって、悩むわけね。
>>969
ポインタが親のクラスを使っていても、実際に指しているクラスが派生
クラスならば、オーバーライドされた派生クラスの関数を自動的に
呼び出してくれるよ。これがないとポインタは全滅してたかも。
974デフォルトの名無しさん:02/05/15 23:37
>972
まさか!ぼくが読んだポインタの本はそんな勘違いを起こしませんよ。
しかしその場合、どうすればいいのかな?両方ともa[10]で宣言すればいいかな。
(1 << 2)
これってどういう意味なんですか?
>>974
>ぼくが読んだポインタの本はそんな勘違いを起こしませんよ。

いや、お前が・・・
977デフォルトの名無しさん:02/05/15 23:44
>957
00000000 00000000 00000000 00000001

00000000 00000000 00000000 00000100
978デフォルトの名無しさん:02/05/16 00:02
>>977
戻りすぎだろ。。。汗
975か?
>>961
ネタなのかポカなのかマジなのか分からん…
981980:02/05/16 03:00
>>980は、2重で立ててしまったものなので
削除依頼に出しました。正しいスレは
http://pc.2ch.net/test/read.cgi/tech/1021459016/l50
982デフォルトの名無しさん:02/05/16 10:05
そしてこっちのスレは最後までゲイネタを語り合うことに使いましょう!!!
ともっちは今日もおなにしてるんだろうなぁ。
984デフォルトの名無しさん:02/05/16 12:27
俺はちゃんと毎日ともっちを想像しながらおなにしてるぞ!!
985デフォルトの名無しさん:02/05/16 12:32
みんながともっち、ともっち言うから
俺のモノまで反応しちゃったよ・・・(*-_-)
986デフォルトの名無しさん:02/05/16 12:47
>>979
おまえはextern〜だけでなく、変数宣言までヘッダーファイルの中に書き込むのか?
987デフォルトの名無しさん:02/05/16 12:57
>>985
やっぱり体のほうは正直なんだね。
いっしょにきもちよくなろう!!
988デフォルトの名無しさん:02/05/16 12:59
ともっち!プログラムだけじゃなくて、体の疑問や悩みも
詳しく分かるように教えてあげるよ!
989デフォルトの名無しさん:02/05/16 13:04
ともっち!おじさんがいまから具体的な指導してあげるよ。
990デフォルトの名無しさん:02/05/16 13:05
次にのっとるのに都合のよいスレはないのか?
991デフォルトの名無しさん:02/05/16 13:05
なんだか、プログラマー板にあるスレは
議論の場になってしまっていて、
ともっちのこと好きだ−!
という系統の書き込みがやりづらいんですけど、、、、
992デフォルトの名無しさん:02/05/16 13:06
>>991
いろんなスレに書き込もう!
993デフォルトの名無しさん:02/05/16 13:06
もうすぐ1000!!
994デフォルトの名無しさん:02/05/16 13:07
このスレの1000をとるのはやっぱりともっちなんだろうか、、、
995デフォルトの名無しさん:02/05/16 13:08
あと5件
996デフォルトの名無しさん:02/05/16 13:08
>>994
ハァ?
997 ◆inFbM64o :02/05/16 13:08
10000!!!
998デフォルトの名無しさん:02/05/16 13:08
dfffffddd
999デフォルトの名無しさん:02/05/16 13:08
>>996
ともっちだよ!
1000デフォルトの名無しさん:02/05/16 13:08
やったー1000げっと成功!
みなさん今後も指導よろしくおねがいしまーす!
         by ともっち
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。