NOEMBLEM/エンブレムが設定されていません。

メールの詳細(メール表示)

件名:

差出人: さん "Y.Mizuoka"<miz…>
送信日時 2004/03/21 20:59
ML.NO [beginers:0439]
本文:

はじめての投稿です。よろしくお願いします。
グローバル変数についてちょっと質問したいのですが。
2つ以上のソースファイルで共通に使用したい変数は

まず、変数の定義を一つのソースで行いメモリに領域を確保し、
他のソースから参照したい場合は extern での宣言が普通だと思っていたのですが
2つのソースファイルで同じ変数を定義した場合にも共有できてしまうことが
最近わかったのですが、これはあたりまえのことなのでしょうか?

たまたまヘッダーファイルにグローバル変数をまとめて、それを2つソースから
インクルードしてしまった時に気が付いたのですが、、、。
問題のないコーディングなのでしょうか?

解りにくい文章ですみません。
以下に簡単なソースを書きます。
ちなみに、gcc 3.2.2 でコンパイルしています。

/* file_1.c *****************************************/
#include <stdio.h>

extern int func();

int global;

int main(void)
{
global = 2;
func();

printf("file_1: adr = %p val = %dn", &global, global);

return(0);
}

/* file_2.c *******************************************/

#include <stdio.h>

int global;

int func(void)
{
printf("file_2: adr = %p val = %dn", &global, global);

return(0);
}

上記 file_1.c と file_2.c をコンパイル、リンクし実行すると

file_2: adr = 0x804957c val = 2
file_1: adr = 0x804957c val = 2

といった結果になり、共有していることがわかります。

このエントリーをはてなブックマークに追加
添付:

このメールには下記のメールが返信されています:

更新順メールリスト