PDA

View Full Version : نحوه ي کار با کلاس حافظه ي Extern



MohammadGh2011
چهارشنبه 28 فروردین 1392, 16:23 عصر
سلام عليکم دوستان

از عنوان تاپيک سوال واضح است...
با يک مثال پاسخ را نيز واضح کنيد...:کف:
+ کاربرد اين نوع کلاسها را نيز بيان فرماييد.


ممنونم

UfnCod3r
چهارشنبه 28 فروردین 1392, 20:53 عصر
کلاس حافظه فکرنکنم بهش بگن :متفکر: من که بهش می گم کلمه کلیدی :لبخند:
کاربر های زیاد داره . یه نمونش اینکه شما می تونی به متغیر تابع و ... که در یک فایل سورس تعریف کردی جای دیگه دسترسی داشته باشه .

/////////file1.cpp////////////
int a = 10;

/////////file2.cpp////////////
extern int a;
a++; //a == 11

یه کاربر دیگش هم اینه که می تونی تابع رو حالت سی کامپایل کنی .اینم داشتانی داره برا خودش

extern "C" int func(int);

MohammadGh2011
چهارشنبه 28 فروردین 1392, 22:50 عصر
سلام عليم خدمت شما دوست عزيز

کلاس حافظه فکرنکنم بهش بگن من که بهش می گم کلمه کلیدی
خود Extern رو بهش ميگن کلمه ي کليدي ولي کلش رو ميگن کلاس حافظه که چند تا نوع داريم و يکيش همين Extern هستش.
لينک زير رو هم ببينيد:
کلاس‌های حافظه در C (http://fa.wikipedia.org/wiki/%DA%A9%D9%84%D8%A7%D8%B3%E2%80%8C%D9%87%D8%A7%DB%8 C_%D8%AD%D8%A7%D9%81%D8%B8%D9%87_%D8%AF%D8%B1_C)





/////////file1.cpp////////////
int a = 10;

/////////file2.cpp////////////
extern int a;
a++; //a == 11
خطاي زير رو ميده:

undefined reference to `a'

مراحل رو درست رفتم ولي نميدونم چرا خطا ميده،لطفا مراحل کار رو توضيح دهيد تا طبق اون بررسي شود...
من فقط توي مثالش موندم که ببينم چه طور کار ميکنه!

UfnCod3r
پنج شنبه 29 فروردین 1392, 09:36 صبح
test.c

#include<stdio.h>
extern int var;
extern int foo();

void main()
{
printf("value of var from foo: %d\n", foo());
printf("accessing var directly:%d\n ", var);
}

test1.c

int var; /*global to this file and can be extern-ed by another file*/

int foo(void)
{
return ++var;
}

MohammadGh2011
پنج شنبه 29 فروردین 1392, 10:14 صبح
test.c

#include<stdio.h>
extern int var;
extern int foo();

void main()
{
printf("value of var from foo: %d\n", foo());
printf("accessing var directly:%d\n ", var);
}

test1.c

int var; /*global to this file and can be extern-ed by another file*/

int foo(void)
{
return ++var;
}


دوست عزيز ، قبول نميکنه؛ لطفا سورس C++ رو ضميمه کنيد...

MohammadGh2011
جمعه 30 فروردین 1392, 16:54 عصر
نبود يه extern شناس...؟؟؟!!!

UfnCod3r
جمعه 30 فروردین 1392, 17:14 عصر
شما درست ننوشتی .
همون که من گذاشتم کار می کنه.
تو نت سمپل پره یه سرچ بزن .

MohammadGh2011
جمعه 30 فروردین 1392, 21:17 عصر
شما تو پست 2 نوشتيد a++;
به اينصورت تغيير دادم جواب داد:
++a;


سپاس گزارم... ياعلي