פורסם 2011 בפברואר 614 שנים איך ניתן להגדיר מצביע לקובץ שהוגדר בפונק' ספציפית בקובץ מסויים (שאינו main) כך שיהיה אפשר להשתמש באותו מצביע בפונק' אחרת שבקובץ אחר (שגם אינו main)?מה עלי להגדיר בכל קובץ ואיפה, ועל מה עלי לשמור ?תודה !!
פורסם 2011 בפברואר 614 שנים מצביע לקובץ הוא בדיוק כמו כל מצביע אחר, ומעבירים אותו בדיוק כמו שמעבירים כל משתנה אחר.
פורסם 2011 בפברואר 614 שנים מחבר ברור, אבל לא לזה התכוונתי.התכוונתי שאם הגדרתי בתוך פונק' מצביע לקובץ, אבל אותה פונק' לא מחזירה את המצביע אלא רק יוצרת אותו, ואני מעוניין להשתמש בו בפונק' אחרת בקובץ C אחר המחובר לאותו פרוייקט (פרוייקט עם כמה קבצי C), אז נניח שהגדרתי אותו כ-extern האם אני אוכל להשתמש בו מחוץ לפונק' ?
פורסם 2011 בפברואר 614 שנים שוב, כמו כל משתנה אחר:הפונקציה יכולה להחזיר את הערך באמצעות ערך החזרה.הפונקציה יכולה להחזיר את הערך באמצעות פרמטר פלט (ע"י מצביע).הפונקציה יכולה לשים את הערך בתוך משתנה גלובלי.האופציה השלישית היא הפחות מועדפת, אגב. עדיף להימנע ממשתנים גלובליים.
פורסם 2011 בפברואר 614 שנים מחבר ואם אני מגדיר את הפרמטר בתוך הפונק' כ-extern אני אוכל להשתמש בו בלי הצהרה עליו בכל פונק' אחרת בכל קובץ אחר ?
פורסם 2011 בפברואר 614 שנים משתנה שהוגדר בתוך פונקציה יהיה "מוכר" אך ורק בתוכה.על מנת להגדיר משתנה כ-extern, הוא חייב להיות מוגדר במקום גלובלי כלשהו בנוסף (דהיינו מחוץ לפונקציה).
פורסם 2011 בפברואר 614 שנים מחבר כלומר אם יש לי 2 קבצי C שבכ"א מהם קיימת פונק', ואני רוצה שפונק' 2 תכיר את הפרמטר מפונק' 1, אני אמור להדגיר אותו בקובץ של פונק' 1 מחוצה לה ועוד פעם בתוך פונק' 1 כ-extern ואז פונק' 2 תוכל להשתמש בערך העדכני של אותו פרמטר או שהיא תקבל את הערך אליו אותחל ?
פורסם 2011 בפברואר 614 שנים מחבר my_main.c=========#include<stdio.h>...#include "1.h"#include "2.h"int main(){bla bla return 0;}1.c====int x;void func_1(void){extern int x=0;x=9;}2.c=====void func_2(void){int x;printf( "x=%d",x);}האם ההדפסה תיתן x=9 ? או שאני צריך להגדיר את x אחרת ?
פורסם 2011 בפברואר 614 שנים כשאתה מגדיר int x אז אתה מגדיר משתנה חדש בשם x. כשאתה מגדיר extern int x אתה אומר לקומפיילר להשתמש במשתנה קיים בשם x, שצריך להיות מוגדר במקום אחר (אם הוא לא מוגדר בשום מקום אחר, תהיה לך שגיאת linkage).במקרה שלך, הגדרת משתנה אחד גלובלי בשם x, בפונקציה func_1 אמרת לקומפיילר להשתמש בו, ובפונקציה func_2 הגדרת משתנה אחר בשם x. אז הקוד לא יעבוד.הדרך המומלצת לעבוד עם extern היא להגדיר אותו בדיוק בשני מקומות:בקובץ h להגדיר extern int x.בקובץ c אחד ויחיד להגדיר int x.כל מי שרוצה להשתמש ב-x צריך להגדיר גם כן extern int x או לעשות include לאותו קובץ h.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.