分割コンパイル、make使い始めたのですが
外部変数の定義、再定義ファイルをそれぞれ作ってインクルードするのと
#ifndefを使って再定義をするのとどっちがかっこいいですか
プロフェッショナルな方の意見をお聞かせ下さい
初心者の質問で恐縮です。
>>952 再定義?
変数の定義は一度しか出来ません。
宣言と定義のことだったらC FAQ嫁姑。
>>953 外部変数dす
ひとつのファイルには
#define MAX 40
float A[MAX];
ってやって残りのファイルには
#define MAX 40
extern float A[MAX];
ってやりたいってことです。
ヘッダファイルに extern float A[MAX]; と書き、それをインクルードする .c ファイルのひとつに float A[MAX]; と書く。
>>955 #ifndefを使うのとどっちがオススメですか?
957 :
デフォルトの名無しさん:02/05/15 22:26
>>958 こんな感じです
- sample.h -
#ifndef _sample_h
#define _sample_h
int x;
#else
extern int x;
#endief
>>960 ヘッダーファイルの中じゃなくて、.cファイルの中で宣言しろって。
>>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++の仮想関数を学習してしまうとよい罠。
>>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
>>961 ネタなのかポカなのかマジなのか分からん…
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
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
997 :
◆inFbM64o :02/05/16 13:08
10000!!!
998 :
デフォルトの名無しさん:02/05/16 13:08
dfffffddd
999 :
デフォルトの名無しさん:02/05/16 13:08
1000 :
デフォルトの名無しさん:02/05/16 13:08
やったー1000げっと成功!
みなさん今後も指導よろしくおねがいしまーす!
by ともっち
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。