ABA


"מדריך/הסבר: ++Namespacing in C"
גירסת הדפסה   אשכול נעול - לקריאה בלבד
 
   
קבוצות דיון מדריכים, טריקים וטיפים נושא #11746 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 11746
bizho

   22:25   05.07.05   
אל הפורום  
  מדריך/הסבר: ++Namespacing in C  
 
   ערכתי לאחרונה בתאריך 05.07.05 בשעה 22:26 בברכה, bizho
 
מדריך לכל המתכנתים כאן שמעוניינים לכתוב קוד נקי יותר, נכון יותר ותקין יותר.

כולכם ודאי מכירים את הספריה הסטנדרטית של ++C. הספריה, שנחתמה יחד עם התקן האחרון של ++C בשנת 2004 (לפני כן היה סטנדרט של שנת 1998) מספקת דרכים לעבוד עם מבני נתונים, קלט/פלט ועוד.
מחלקות רבות נכנסו לספריית המחלקות הסטנדרטית של ++ISO C. אתם בטח מכירים את iostream, string, vector וכו'.
הרעיון הוא שגישה אל המחלקות האלה יהיה תלוי בincludeים שאתם מבצעים.
עד חתימת התקן ב98, מתכנתי ++C השתמשו בצורה <include <iostream.h#, שבאה משפת C.
אבל כחלק מהסטנדרט, הוצג רעיון מרחב השמות - Namespacing. הרעיון אומר שניתן לעטוף חבילת מחלקות במרחב שמות מסויים, כדי להימנע מטעויות קומפילציה שנובעות משמות דומים של משתנים/מחלקות/שיטות (פונקציות) בהם התוכנית משתמשת. לדוגמא, אם יש לי class a וclass b, ובשתי המחלקות הגדרתי משתנה int c, כשאני כותב c = 50 במחלקה שמשתמשת בשתי המחלקות שהגדרתי, לאיזה c הקומפיילר יפנה?
בדיוק בשביל זה הומצא מרחב השמות. למי שמכיר Java - זהו הpackage.
כל הספריות הסטנדרטיות שהזכרתי מקודם הוכנסו למרחב השמות std. זה אומר שכדי להשתמש בפונקצייה cout, למשל, אני אעשה משהו כזה:


#include <iostream>
int main()
{
std::cout << "bla";
}

הstd יחד עם אופרטור ה:: שבא לציין מיקום, אומר לקומפיילר "תחפש את השיטה cout בתוך הnamespace std.
כדי למנוע הקלדה מיותרת, יצרו את הפקודה using namespace, שאומרת לקומפיילר לחפש בתור ברירת מחדל במרחב השמות אותו ציינו לאחר ההוראה.
הקוד ממקודם, לאחר השימוש בהוראה החדשה, ייראה כך:


#include <iostream>
using namespace std;
int main()
{
cout << "bla";
}

אז נכון שפה אולי הוספנו תווים, אבל ככל שהתוכנית מתארכת - זה שווה יותר.

אפשר עדיין להתשמש בiostream.h. זה פשוט לא סטנדרטי ויכול להיות שביום מן הימים התמיכה הזאת של הקומפיילרים תבוטל, ואז קוד ישן פשוט לא יתקמפל.

Reference:
http://www.research.att.com/~bs/bs_faq2.html#simple-program - שאלה מתוך הFAQ של ממציא השפה, ביורן סטראוסרופ.
http://www.mindview.net/Books/TICPP/ThinkingInCPP2e.html - אחד הספרים הטובים ביותר ללימוד ++C. הוא כתוב אמנם באנגלית, היא היא טכנית ופשוטה מאוד. יש שם הסבר על כל האספקטים ב++C, וכמובן על Namespacing.


        שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  תודה רבה! מדריך מצויין ומסביר טוב את הבסיס. חשוב להבין Omerr 05.07.05 22:29 1
  תודה רבה מדריך נורא שימושי! onissan  05.07.05 22:39 2
  תודה רבה אלימאשדוד 05.07.05 23:12 3
  תודה רבה chen31  05.07.05 23:30 4
  תודה רבה :) lord1  05.07.05 23:46 5
  תודה :] KR 06.07.05 15:47 6
  תודה רבה! Fire-Bug 07.07.05 02:46 7
  קצר ולעניין Gh0sT_d0g 07.07.05 14:27 8
  תודה רבה הלוואי והייתי מכיר באמת משהו משם חח THE BEST 08.07.05 02:54 9
  תודה. יש לציין ש-Visual C++ 2005 לא תומכת ב-iostream.h TheBinary 10.07.05 03:00 10
     סיבה מצויינת למה כדאי להתרגל לnamespacing. :) bizho 10.07.05 20:34 12
  תודה רבה הפועל מהצפון  10.07.05 07:17 11

       
Omerr
חבר מתאריך 26.5.02
322 הודעות
   22:29   05.07.05   
אל הפורום  
  1. תודה רבה! מדריך מצויין ומסביר טוב את הבסיס. חשוב להבין  
בתגובה להודעה מספר 0
 
   את זה כדי להתפתח ב-C++. עבודה טובה!


                                    (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
onissan  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 13.4.03
47790 הודעות, 10 פידבק
   22:39   05.07.05   
אל הפורום  
  2. תודה רבה מדריך נורא שימושי!  
בתגובה להודעה מספר 0
 


                                    (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
אלימאשדוד

   23:12   05.07.05   
אל הפורום  
  3. תודה רבה  
בתגובה להודעה מספר 0
 
  


                                    (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
chen31 
חבר מתאריך 18.3.02
18288 הודעות
   23:30   05.07.05   
אל הפורום  
  4. תודה רבה  
בתגובה להודעה מספר 0
 
  


Skoda Fabia 1.2TSI Sport


                                    (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
lord1 
חבר מתאריך 18.3.02
19137 הודעות
   23:46   05.07.05   
אל הפורום  
  5. תודה רבה :)  
בתגובה להודעה מספר 0
 
  




                                    (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
KR

   15:47   06.07.05   
אל הפורום  
  6. תודה :]  
בתגובה להודעה מספר 0
 
  


                                    (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Fire-Bug

   02:46   07.07.05   
אל הפורום  
  7. תודה רבה!  
בתגובה להודעה מספר 0
 
  


                                    (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Gh0sT_d0g

   14:27   07.07.05   
אל הפורום  
  8. קצר ולעניין  
בתגובה להודעה מספר 0
 
  


                                    (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
THE BEST לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.9.02
10502 הודעות, 1 פידבק
   02:54   08.07.05   
אל הפורום  
  9. תודה רבה הלוואי והייתי מכיר באמת משהו משם חח  
בתגובה להודעה מספר 0
 
  

http://up352.siz.co.il/up2/jz1zege5mezj.jpg


                                    (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
TheBinary

   03:00   10.07.05   
אל הפורום  
  10. תודה. יש לציין ש-Visual C++ 2005 לא תומכת ב-iostream.h  
בתגובה להודעה מספר 0
 
   הזמנתי את Visual Studio 2005 Beta 2 ועכשיו אני רואה שאין את הקובץ iostream.h.


                                    (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
bizho

   20:34   10.07.05   
אל הפורום  
  12. סיבה מצויינת למה כדאי להתרגל לnamespacing. :)  
בתגובה להודעה מספר 10
 
  


                                    (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
הפועל מהצפון 
חבר מתאריך 25.5.05
2128 הודעות
   07:17   10.07.05   
אל הפורום  
  11. תודה רבה  
בתגובה להודעה מספר 0
 
  

מחקרים קובעים כי הפועל פ"ת פוגעת בבריאות.


                                    (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
_________________________________________________________________________
למנהלים:  שחרר | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול | עריכת אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net