اطلاعیه

Collapse
No announcement yet.

توابع و رجیستر های سراسری در C

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    توابع و رجیستر های سراسری در C

    درود
    چند تا سوال دارم
    اول اینکه ما یک متغیر مثلا i تعریف میکنیم و دو تا فایل هم داریم که یکی main.c و یکی دیگه مثلا test.c هستش
    حالا به شرط اینکه ما توی تعریف رجیستر i عدد بهش نداده باشیم میشه توی فایل دوم اونو به صورت extern تعریف کرد
    سوال من اینه که اگه ما متغیری داخل فلش بریزیم و بخواهیم توی یک فایل دیگه استفاده کنیم باید چکار کنم چون وقتی رجیستری داخل فلش میریزیم عدد ثابت بهش میدیم ( مثلا یه عکس داخلش میریزیم)

    main:
    int i;

    test:
    extern int i;
    این چجوری سراسری تعریف کنم
    const unsigned char=[10]=1,2,3,4,5,6,7......



    سوال دوم
    برای تعریف تابعی که توی فایل مین تعریف کردم به صورت سراسری باز میایم و اسم اون تابع توی فایل دوم مینویسیم مثلا

    main:
    void test(void){
    ......
    }
    file2:
    void test(void);

    آیا باید کار دیگه ای هم کرد مثلا توی فایل .h مین و فایل .h فایل دوم هم باید این نوشت .
    یه موردی دارم که از تابعی که توی فایل مین هست عدد بر میگرده و من از فایل دوم اونو میخونم . نمیدونم چرا اعدادش تغییر میکنه؟؟؟

    سوال سوم اینه که
    چرا توی نرم افزار هایی مثل کد ویژن - میکرو سی -....... ما میومدیم و فایل دوم درست میکردیم و کنار فایل مین میزاشتیم و فقط با یک include ساده اون فایل اضافه میشد و تمام رجیستر هایی که بالای
    include نوشته بودیم به سایر فایل ها هم اضافه میشد ولی توی برنامه هایی مثل keil حتما باید به پروژه اضافه بشه و حتما باید فایل .h براش بسازیم و فایل .h اینکلود کنیم
    چه خوبی داره ؟؟؟

    #2
    پاسخ : توابع و رجیستر های سراسری در C

    در خصوص سوال اول تون نمیتونم خیلی جواب درستی بدم چون خیلی نا مفهومه. شما یک سری اصطلاحاتی رو استفاده کردید که اصلا به زبان C مربوط نمیشن و مربوط به اسمبلی هستن سر همین آدم گیج میشه. مثلا منظورتون از رجیستر چیه؟ یا همین طور فلش؟
    در خصوص سوال دوم شما باید اسم تابع خارجی رو حتما با پسوند extern ذکر کنید. در غیر این صورت کامپایلر متوجه نمیشه تابع خارجیه و خراب میشه.
    برای مثال کافیه بنویسید extern func; و تمام. خودش موقع لینک میگرده و بدنه اش رو پیدا میکنه.
    در خصوص سوال سوم باید بگم این مسئله یک جور سلیقه است که طراح IDE این طوری خوشش میومده. هیچ کدوم مزیت یا عیب قطعی نسبت به اون یکی ندارن. یکی میبینید با کیل حال میکنه یکی دیگه با ویژوال استودیو یکی هم با اکلیپس یکی هم مثل من با نوت پد ساده برنامه مینویسه

    دیدگاه

    لطفا صبر کنید...
    X