الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

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

مغلق
بدأه سلامة_2005 في 3 نوفمبر 2005 · 6 رد · 887 مشاهدة · في لغة C و ++C
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

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

#ifndef _abc_h
#define _abc_h

void 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 في 5 أبريل 2014 في 17:53 — السبب: add some tags

#2

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

في ملف abc.cpp

int abc;

BEng , Electronics and communications.

Embedded systems engineer.

Graphics Programmer

عالم الكومبيوتر هو من لديه المعرفة في علوم الكومبيوتر ، الرياضيات ، هندسة الالكترونيات -احمد صالح

#3

عند كتابتك

extern int abc;

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

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

"خيركم من تعلم العلم وعلمه". ..........استغفر الله. ........ اللهم صلي وسلم على سيدنا محمد

احمد عبد الحميد ابوغرارة

CodeGuru CodeProject CGTalk

#4

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

cin >>abc;

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#5

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

#6

السلام عليكم

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

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

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

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

#7

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

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

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

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

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

هذا الموضوع مغلق.

مواضيع مشابهة