• 0
سلامة_2005

المتغيرات العامة والتحكم فيها

سؤال

السلام عليكم ورحمة الله

في الحقيقة واجهتني مشكلة في لغة سي++ والمشكلة كالتالي:
+ انشئة ملف بأسم abc.h
#############
 

#ifndef _abc_h#define _abc_hvoid message();extern int abc;#endif

##############

وأنشئة ملف التطبيق له:
###############
abc.cpp

#include"abc.h"#include<iostream>using namespace stdj;void show(){cout<<"\nEnter any value:";cin<< abc;cout<< abc:}

###############
واخيرا انشئة الملف الرئيسي :
main.cpp

#include<iostream>using namespace std;#include<conio.h>#include"abc.h"int main(){    message();    cout<< "\nExit...";    getch();    return 0;}

########################33
و يقوم مصرف gcc بتصريفها ولكن لا يقوم بربطها بل يعرض رسالة خطاء بسبب المتغير العام
abc مع اني استخدمة كلمة extern قبل اعلانه
فما هي الطريقه الصحيحة لحل مثل هذه المشكلة ؟؟

تم تعديل بواسطه مصطفى 36a2
add some tags
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

6 إجابة على هذا السؤال .

  • 0

انت نسيت ان تضع

في ملف abc.cpp

int abc;

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

عند كتابتك

extern int abc;

فانت قمت بعمل declaration للمتغير يعني انك لم تحجز له مكان في الذاكرة بعد

يعني انك تخبر المترجم ان definition موجودة في مكان اخر في البرنامج حيث سيتم حجز مكان في الذاكرة للمتغير ولذلك تحتاج لكتابة ما اخبرك به اخي احمد صالح

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

لديك ايضاً مشكلة صغيرة وهى الاسهم التابعة لــcin المفروض ان تشير إلى المتغير وليس العكس وتكون هكذا

cin >>abc;

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

بعدين انت عملت declaration لـ message و لكن الـ definition كان لـ show ...!!

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

شكراً لكم جميعاً على المشاركة واعتذر على التأخر في الرد

الموظوع يتركز بشكل عام حول استخدام الكلمة extern اما الاخطاء الاخرى فقد حدثة من غير قصد لاني كتبة الموظوع على عجل

وشكراً على التوظيح

كل عام وانتم بخير

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

عفواً أخ احمد الصالح لم افهم قصدك جيداً

أنا اعلنت عن المتغير int abc انه extern في الملف الرأسي abc.h

وعملة include للملف الرأسي abc.h في الملف abc.cpp

الشيء الذي أعرفه هو ان الكلمة extern تستخدم لتعريف متغير عام خارج الدلة الرأيسية main وخاصة عندما تريد أستخدام

هذا المتغير العام في أكثر من ملف مثل abc.cpp , main.cpp عندها يعطيني الـ linker رسالة خطأ : Linker error : undefined reference to `abc'

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .