GCC (אוסף מהדר GNU) הוא תוכנת שורת פקודה בקוד פתוח, המיועדת לשמש מהדר עבור מערכות הפעלה מבוססות GNU / Linux ו- BSD. הוא כולל חזיתי עבור שפות תכנות רבות, כולל Objective-C, Go, C + +, Java, C, Ada ו- Fortran.
תכונות במבט אחד
עם GCC ניתן להגדיר, לקמפל ולהתקין יישומי GNU / Linux במערכות הפעלה Linux או BSD תוך שימוש רק בארכיב המקור של התוכנית המתאימה. עם זאת, משתמשים אינם זקוקים לאינטראקציה עם המהדר, מכיוון שהדבר נעשה באופן אוטומטי על-ידי קביעת התצורה ועריכת סקריפטים.
הפרויקט כולל גם ספריות עבור שפות תכנות שונות, כגון libstdc ו libgcj, וכמו רוב תוכנות גנו, זה צריך להיות מוגדר לפני זה ניתן לבנות ולהתקין במחשב.
הוא יכול גם להציג את הנתיב המלא לספריה ספציפית, תיקיות בנתיב החיפוש של המהדר, נתיב מלא למרכיב מסוים, ספריות ספריות יעד, סיומת סיסרוט המשמשת לחיפוש כותרות, ולשלשת ה- GNU המשוללת של היעד.
בנוסף, קיימות אפשרויות שונות אחרות להעברת אפשרויות וארגומנטים מופרדים באמצעות פסיקים אל המאסף, המעבד והמקשר, הידור והרכבה ללא קישור, יצירת ספריה משותפת ורבים אחרים.
מיועד למערכת ההפעלה גנו
בהיותה במקור המהדר הראשי של מערכת ההפעלה גנו, GCC (אוסף גנו מהדר) פותחה להיות 100% תוכנה חופשית והוא מותקן כברירת מחדל על כל הפצה לינוקס.
התוכנה משמשת גם את מפתחי קוד פתוח כדי לקמפל את התוכניות שלהם. שורת הפקודה כוללת מספר אפשרויות, וביניהן ניתן לציין את היכולת להציג את מעבד היעד של המהדר & rsquo, וכן את הנתיב היחסי לספריות מערכת ההפעלה.
שורה תחתונה
בסך הכל, GCC הוא אחד המרכיבים החיוניים ביותר של כל מערכת ההפעלה גנו / לינוקס. לא רק שאנחנו יכולים אפילו לדמיין עולם ללא זה, אבל GCC היא הסיבה העיקרית מאחורי המערכת האקולוגית כולה קוד פתוח.
מה חדש במהדורה זו:
- GCC 7.3 הוא מהדורת תיקון באגים מסניף GCC 7 המכיל תיקונים חשובים עבור רגרסיות ואגים חמורים ב- GCC 7.2 עם יותר מ 99 באגים קבועים מאז המהדורה הקודמת.
- גרסה זו כוללת אפשרויות ליצירת קוד כדי להפחית את Vectant Specter 2 (CVE 2017-5715) עבור מטרות x86 ו- powerpc.
מה חדש בגירסה 8.1.0:
- GCC 7.3 הוא שחרור באגים GCC 7 המכיל תיקונים חשובים עבור רגרסיות ואגים חמורים ב GCC 7.2 עם יותר מ 99 באגים קבוע מאז המהדורה הקודמת.
- גרסה זו כוללת אפשרויות ליצירת קוד כדי להפחית את Vectant Specter 2 (CVE 2017-5715) עבור מטרות x86 ו- powerpc.
מה חדש בגרסה:
- GCC 7.1 הוא גרסה מרכזית המכילה פונקציונליות חדשה משמעותית שאינה זמינה ב- GCC 6.x או במהדורות קודמות של GCC. C + + Frontend עכשיו יש תמיכה ניסיונית עבור כל C + + 17 הטיוטה הנוכחית, עם STD = c + 1z ו -std = gnu + 1z אפשרויות 1, ואת libstdc + + הספרייה יש את רוב C + + 17 טיוטה ספריה תכונות מיושם מדי. מהדורות אלו כוללות שיפורים שונים באבחון הנפלט, כולל מיקומים משופרים, טווחי מיקום, הצעות למזהים שגוי, שמות אופציות, רמזים לתיקון ואזהרות חדשות חדשות נוספו. האופטימיזציה שופרה, עם שיפורים המופיעים בכל האופטימיזציה הפנים-פרוצדורלית, אופטימיזציית זמן הקישור ותיקוני יעד שונים, כולל, אך לא רק, תוספות של מעבר מיזוג של חנות, אופטימיזציה של קוד קידוד, פיצול לולאה וצמצום שיפורים. הכתובת Sanitizer יכולה כעת לדווח על שימוש במשתנים לאחר שעזבה את היקפה. GCC עכשיו יכול להיות מוגדר עבור OpenMP 4.5 offloading ל NVidia PTX GPGPUs.
מה חדש בגירסה 6.3.0:
- GCC 6.3 הוא מהדורת תיקון באגים מסניף GCC 6 המכיל תיקונים חשובים עבור רגרסיות ואגים חמורים ב- GCC 6.2 עם יותר מ -79 באגים קבועים מאז השחרור הקודם.
מה חדש בגירסה 6.2.0:
- מהדורה זו היא מהדורת תיקון באגים, המכילה תיקונים עבור רגרסיות ב- GCC 5.2 ביחס למהדורות קודמות של GCC.
מה חדש בגירסה 6.1.0:
- מהדורה זו היא מהדורת תיקון באגים, המכילה תיקונים עבור רגרסיות ב- GCC 5.2 ביחס למהדורות קודמות של GCC.
מה חדש בגירסה 5.3.0:
- מהדורה זו היא מהדורת תיקון באגים, המכילה תיקונים עבור רגרסיות ב- GCC 5.2 ביחס למהדורות קודמות של GCC.
מה חדש בגירסה 5.2.0:
- מהדורה זו היא מהדורת תיקון באגים, המכילה תיקונים עבור רגרסיות ב- GCC 5.1 בהשוואה למהדורות קודמות של GCC.
מה חדש בגרסה 5.1.0:
- C + + Front-end יש כעת תמיכה מלאה בשפות C + 14 ו- C + + Standard יש תמיכה מלאה ב- C + 11 ותמיכה ניסויית מלאה ב- C + 14. התמיכה המלאה ב- C + 11 התאפשרה על ידי אימוץ ABI כפול, ראה https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html לפרטים נוספים.
- ממשק ה- C הקדמי מוגדר כעת כברירת מחדל למצב C11 עם הרחבות GNU, המשפיעות על סמנטיקה של מילת המפתח המובנית, ומביא לשינויים אחרים שנראים לעין, ראה https://gcc.gnu.org/gcc-5/porting_to.html לפרטים נוספים.
- GCC 5.1 מכיל שיפורים שונים בביצוע אופטימיזציה בין-אישית, למשל. קוד מתקפל חדש של קוד IPA זהה ושיפורים LTO שונים, למשל. ODR מבוסס מיזוג של סוגי C + +, ראה http://hubicka.blogspot.cz/2015/04/GCC5-IPA-LTO-news.html לפרטים נוספים.
- ה- GCC 5.1 הרשומה המקומית Allocator מכיל כעת תת-התמחות של retaterialization, ב- i? 86 / x86-64 הוא מסוגל לעשות שימוש חוזר ברישום PIC הקשיח כדי לשפר את הביצועים של קוד עצמאי, יש מעבר RA בין interprocedural פשוט, נוספו שיפורים בהקצאה.
- GCC 5.1 מוסיפה תמיכה חלקית בתקן OpenACC, תמיכה בפריקת OpenMP 4.0 למאיצי ה- Xeon Phi הקרובים של אינטל ותמיכה בפריקת OpenACC ל- PTX. התיקון לא מוגדר של התנהגות ב- GCC הוארך על ידי הוספת בדיקות ריצה חדשות. ספריית GIT ניסיונית של GCC נוספה ב- GCC 5.1.
מה חדש בגירסה 4.8.4:
- שיפורים כלליים בכלי האופטימיזציה:
- AddressSanitizer, גלאי שגיאות זיכרון מהיר, זמין כעת ב- ARM.
- undefinedBehaviorSanitizer (ubsan), גלאי התנהגות לא מוגדר מהיר, נוסף והוא יכול להיות מופעל באמצעות -fsanitize = לא מוגדר. חישובים שונים יסייעו לזהות התנהגות לא מוגדרת בזמן ריצה. UnefinedBehaviorSanitizer זמין כעת בשפות C ו- C ++.
- שיפורים באופטימיזציה של זמן קישור (LTO):
- סוג המיזוג נכתב מחדש. היישום החדש הוא מהיר יותר באופן משמעותי ומשתמש בזיכרון פחות.
- אלגוריתם חלוקה טוב יותר וכתוצאה מכך פחות הזרמה בזמן הקישור.
- הסרה מוקדמת של שיטות וירטואליות מפחיתה את הגודל של קובצי אובייקטים ומשפרת את השימוש בזיכרון בזמן הקישור ואת זמן הידור.
- גופי פונקציה נטענים כעת לפי דרישה ומשחררים את השימוש בזיכרון הכולל בזמן הקישור.
- C + + שיטות מוסתר keyed עכשיו יכול להיות מותאם החוצה.
- בעת שימוש בפלאגין של מקשר, ההידור עם האפשרות -flto מייצר כעת קובצי אובייקטים דקים (.o) הכוללים רק ייצוג שפה ביניים עבור LTO. השתמש ב- FTP-lto-Object כדי ליצור קבצים המכילים בנוסף את קוד האובייקט. כדי ליצור ספריות סטטיות המתאימות לעיבוד LTO, השתמש ב- gcc-ar ו- gcc-ranlib; כדי לסמן סמלים מקובץ אובייקט דק להשתמש ב- gcc-nm. (זה דורש כי ar, ranlib ו- nm כבר מלוקט עם תמיכה plugin.)
- השימוש בבניית זיכרון ב- Firefox עם מאתר debug הופחת מ- 15GB ל- 3.5GB; זמן הקישור מ 1700 שניות ל 350 שניות.
- שיפורים באופטימיזציה בין פרוצדורות:
- מודול ניתוח ירושה מסוג חדש, המשפר את ההתפתחות. Devirtualization עכשיו לוקח בחשבון שמות שם אנונימי ואת C + 11 הסופי מילת מפתח.
- מעבר חדש של ספקולציה ספקולטיבית (נשלט על-ידי fdevirtualize-speculatively.
- שיחות שהוזמנו באופן ישיר הופכות חזרה לעקיפין כאשר השיחה הישירה אינה זולה יותר.
- כינויים מקומיים מוצגים עבור סמלים הידועים כשווי ערך סמלי בין ספריות משותפות ומשפרות את זמני הקישור הדינמי.
- שיפורים באופטימיזציה של משוב שהוזנו על ידי משוב:
- פרופיל של תוכניות המשתמשות בפונקציות C + inline הוא כעת אמין יותר.
- פרופיל זמן חדש קובע סדר אופייני שבו פונקציות מבוצעות.
- מעבר מחדש של פונקציה חדשה (הנשלט על ידי פונקציות -Freorder) מקטין באופן משמעותי את זמן ההפעלה של יישומים גדולים. עד תמיכת binutils הושלמה, היא יעילה רק עם אופטימיזציה בזמן הקישור.
- משוב שמבוסס על הסרת שיחות עקיפות ודילירטואליזציה מטפל כעת בשיחות בין מודולים, כאשר אופטימיזציה של זמן הקישור מופעלת.
- שיפורים ספציפיים לשפות וללשונות:
- גרסה 4.0 של מפרט OpenMP נתמכת כעת במהדורות C ו- C ++ ומתחילה במהדורה 4.9.1 גם במהדר Fortran. ניתן להשתמש באפשרות החדשה -fopenmp-simd כדי לאפשר את הנחיות ה- SIM של OpenMP, תוך התעלמות מהוראות OpenMP אחרות. האפשרות החדשה- fsimd עלות מודל = מאפשר לכוונן את מודל עלות וקטורציה לולאות עם הערות OpenMP ו CILK פלוס הנחיות; -Wopenmp-simd מזהיר כאשר מודל העלות הנוכחי עוקף הנחיות simd שנקבעו על-ידי המשתמש.
- האפשרות -זמן-זמן נוספה עבור המהדרים C, C + ו- Fortran, המזהירים כאשר נעשה שימוש בפקודות המאקרו __DATE__, __TIME__ או __TIMESTAMPP__. פקודות מאקרו אלה עשויות למנוע אוספים זהים לשחזור זהים
- עדה:
- GNAT עבר ל- Ada 2012 במקום לעדה 2005 כברירת מחדל.
- משפחת C:
- נוספה תמיכה לצביעת אבחונים הנשלטים על ידי GCC. ה- fdiagnostics-color = auto יאפשר זאת בעת הפקת מסופים, -Fdiagnostics-color = תמיד ללא תנאי. ניתן להשתמש במשתנה הסביבה GCC_COLORS כדי להתאים אישית את הצבעים או להשבית את הצביעה. אם משתנה GCC_COLORS נמצא בסביבה, ברירת המחדל היא -fdiagnostics-color = auto, אחרת -fdiagnostics-color = Never.
- פלט אבחון לדוגמה:
- $ g ++ -fdiagnostics-color = תמיד -S -Wall test.C
- test.C: בפונקציה & lsquo; int foo () ':
- test.C: 1: 14: אזהרה: אין הצהרה חוזרת בתפקוד חוזר ללא בטל [-Wreturn-type]
- int foo () {}
- test.C: 2: 46: error: עומק העלאת תבנית עולה על מקסימום של 900 (השתמש -מבנה-עומק = כדי להגביר את המקסימום) יצירת & lsquo; struct X '
- template struct X {static const int value = X :: value; }; תבנית מובנית X;
- test.C: 2: 46: נדרש רקורסיבית מ & lsquo; const int X :: ערך '
- test.C: 2: 46: נדרש מ- & lsquo; const int X :: value '
- test.C: 2: 88: נדרש מכאן
- test.C: 2: 46: error: סוג לא שלם & lsquo; X 'בשימוש במפרט שם מקונן
- עם #fragma GCC ivdep החדש, המשתמש יכול לטעון כי אין תלויות שנשאו לולאה שימנעו ביצוע מקביל של איטרציות רצופות באמצעות הוראות SIMD (הוראות מרובות הוראות בודדות).
- תמיכה עבור Cilk Plus נוספה ויכולה להיות מופעלת עם אפשרות -fcilkplus. Cilk Plus הוא הרחבה לשפות C ו- C ++ לתמיכה בנתונים ובמקבילי משימות. הביצוע הנוכחי עוקב אחרי ABI גרסה 1.2; כל התכונות אבל _Cilk_for יושמו.
- נתמך ISO atomics C11 (המזהה סוג _Atomic ואת המאפיין ואת הכותרת) נתמכים כעת.
- נתמכות בחירות כלליות של ISO C11 (מילת מפתח _Generic).
- אחסון מקומי לאחסון C11 של ISO (_Thread_local, בדומה ל- GNU C __thread) נתמך כעת.
- תמיכת ISO C11 נמצאת כעת ברמה דומה של השלמות לתמיכת ISO C99: באגים מלאים של מודולו מלאים, מזהים מורחבים (נתמכים למעט במקרים בפינה כאשר משתמשים במזהים מבוססים), בעיות נקודה צפה (בעיקר אך לא לגמרי המתייחסות לתכונות C99 אופציונליות מ נספחים F ו - G) ו נספחים K אופציונליים K (ממשקי בדיקת גבולות) ו- L (analyseability).
- תוסף C חדש __auto_type מספק קבוצת משנה של הפונקציונליות של C + 11 אוטומטי ב- GNU C.
- C ++:
- יישום G + + של ניכוי סוג החזרת C + 1y עבור פונקציות רגילות עודכן כך שיתאים ל- N3638, ההצעה התקבלה לנייר העבודה. הכי חשוב, זה מוסיף decltype (אוטומטי) לקבלת סמנטיקה decltype ולא סמנטיקה נימוקים התמצאות תבנית של אוטומטי רגיל:
- int & amp; f ();
- auto i1 = f (); // int
- סוג דליפה (אוטומטי) i2 = f (); // int & amp;
- G + + תומך ב- C + 1y ללמדי לכידת לאמבדה:
- [x = 42] {...};
- למעשה, הם התקבלו מאז GCC 4.5, אך כעת המהדר אינו מזהיר עליהם ב- cd = c + 1y, ותומך גם באתחול של סוגריים וסגנונות.
- G + + תומך במערכי C + + 1 באורך משתנה. G + + תמך VANs בסגנון GNU / C99 במשך זמן רב, אבל עכשיו בנוסף תומך באתחול ו ללמדה ללכוד על ידי הפניה. במצב + C + 1y יתלונן על שימוש ב- VLA שאינו מותר על פי טיוטת התקן, כגון יצירת מצביע לסוג VLA או החלת גודל למשתנה VLA. שים לב כי כעת נראה כי VLAs לא יהיה חלק C + 14, אבל יהיה חלק מסמך נפרד ואז אולי C + 17.
- void f (int n) {
- int a [n] = {1, 2, 3}; // זורק std :: bad_array_length אם n & lt; 3
- [& amp; a] {עבור (int i: a) {cout
מה חדש בגירסה 4.9.1:
- GCC 4.9.1 הוא תיקון תיקון באגים מסניף GCC 4.9 המכיל תיקונים חשובים עבור רגרסיות ואגים חמורים ב- GCC 4.9.0 עם יותר מ -88 באגים קבועים מאז המהדורה הקודמת. בנוסף לכך, GCC 4.9.1 שחרור תומך OpenMP 4.0 גם Fortran, ולא רק ב- C ו- C + +.
מה חדש בגירסה 4.9.0:
- שיפורים כלליים בכלי האופטימיזציה:
- AddressSanitizer, גלאי שגיאות זיכרון מהיר, זמין כעת ב- ARM.
- undefinedBehaviorSanitizer (ubsan), גלאי התנהגות לא מוגדר מהיר, נוסף והוא יכול להיות מופעל באמצעות -fsanitize = לא מוגדר. חישובים שונים יסייעו לזהות התנהגות לא מוגדרת בזמן ריצה. UnefinedBehaviorSanitizer זמין כעת בשפות C ו- C ++.
- שיפורים באופטימיזציה של זמן קישור (LTO):
- סוג המיזוג נכתב מחדש. היישום החדש הוא מהיר יותר באופן משמעותי ומשתמש בזיכרון פחות.
- אלגוריתם חלוקה טוב יותר וכתוצאה מכך פחות הזרמה בזמן הקישור.
- הסרה מוקדמת של שיטות וירטואליות מפחיתה את הגודל של קובצי אובייקטים ומשפרת את השימוש בזיכרון בזמן הקישור ואת זמן הידור.
- גופי פונקציה נטענים כעת לפי דרישה ומשחררים את השימוש בזיכרון הכולל בזמן הקישור.
- C + + שיטות מוסתר keyed עכשיו יכול להיות מותאם החוצה.
- בעת שימוש בפלאגין של מקשר, ההידור עם האפשרות -flto יוצר כעת קובצי אובייקטים דקים (.o) הכוללים רק ייצוג שפה ביניים עבור LTO. השתמש ב- FTP-lto-Object כדי ליצור קבצים המכילים בנוסף את קוד האובייקט. כדי ליצור ספריות סטטיות המתאימות לעיבוד LTO, השתמש ב- gcc-ar ו- gcc-ranlib; כדי לסמן סמלים מקובץ אובייקט דק להשתמש ב- gcc-nm. (דורש כי ar, ranlib ו- nm כבר מלוקט עם תמיכה plugin.)
- השימוש בבניית זיכרון ב- Firefox עם מאתר debug הופחת מ- 15GB ל- 3.5GB; זמן הקישור מ 1700 שניות ל 350 שניות.
- שיפורים באופטימיזציה בין פרוצדורות:
- מודול ניתוח ירושה מסוג חדש, המשפר את ההתפתחות. Devirtualization עכשיו לוקח בחשבון שמות שם אנונימי ואת C + 11 הסופי מילת מפתח.
- מעבר חדש של ספקולציה ספקולטיבית (נשלט על-ידי fdevirtualize-speculatively.
- שיחות שהוזמנו באופן ישיר הופכות חזרה לעקיפין כאשר השיחה הישירה אינה זולה יותר.
- כינויים מקומיים מוצגים עבור סמלים הידועים כשווי ערך סמלי בין ספריות משותפות ומשפרות את זמני הקישור הדינמי.
- שיפורים באופטימיזציה של משוב שהוזנו על ידי משוב:
- פרופיל של תוכניות המשתמשות בפונקציות C + inline הוא כעת אמין יותר.
- פרופיל זמן חדש קובע סדר אופייני שבו פונקציות מבוצעות.
- מעבר מחדש של פונקציה חדשה (הנשלט על ידי פונקציות -Freorder) מקטין באופן משמעותי את זמן ההפעלה של יישומים גדולים. עד תמיכת binutils הושלמה, היא יעילה רק עם אופטימיזציה בזמן הקישור.
- משוב שמבוסס על הסרת שיחות עקיפות ודילירטואליזציה מטפל כעת בשיחות בין מודולים, כאשר אופטימיזציה של זמן הקישור מופעלת.
- שיפורים ספציפיים לשפות וללשונות:
- גירסה 4.0 של מפרט OpenMP נתמכת כעת עבור המהדרים C ו- C ++. ניתן להשתמש באפשרות החדשה -fopenmp-simd כדי לאפשר את הנחיות ה- SIM של OpenMP, תוך התעלמות מהוראות OpenMP אחרות. האפשרות החדשה- fsimd עלות מודל = מאפשר לכוונן את מודל עלות וקטורציה לולאות עם הערות OpenMP ו CILK פלוס הנחיות; -Wopenmp-simd מזהיר כאשר costmodel הנוכחי עוקף הוראות simd שנקבעו על ידי המשתמש.
- האפשרות -זמן-זמן נוספה עבור המהדרים C, C + ו- Fortran, המזהירים כאשר נעשה שימוש בפקודות המאקרו __DATE__, __TIME__ או __TIMESTAMPP__. פקודות מאקרו אלה עשויות למנוע אוספים זהים לשחזור זהים
- עדה:
- GNAT עבר ל- Ada 2012 במקום לעדה 2005 כברירת מחדל.
- משפחת C:
- נוספה תמיכה לצביעת אבחונים הנשלטים על ידי GCC. ה- fdiagnostics-color = auto יאפשר זאת בעת הפקת מסופים, -Fdiagnostics-color = תמיד ללא תנאי. ניתן להשתמש במשתנה הסביבה GCC_COLORS כדי להתאים אישית את הצבעים או להשבית את הצביעה. אם משתנה GCC_COLORS נמצא בסביבה, ברירת המחדל היא -fdiagnostics-color = auto, אחרת -fdiagnostics-color = Never.
- פלט אבחון לדוגמה:
- $ g ++ -fdiagnostics-color = תמיד -S -Wall test.C
- test.C: בפונקציה & lsquo; int foo () ':
- test.C: 1: 14: אזהרה: אין הצהרה חוזרת בתפקוד חוזר ללא בטל [-Wreturn-type]
- int foo () {}
- test.C: 2: 46: error: עומק העלאת תבנית עולה על מקסימום של 900 (השתמש -מבנה-עומק = כדי להגביר את המקסימום) יצירת & lsquo; struct X '
- template struct X {static const int value = X :: value; }; תבנית מובנית X;
- test.C: 2: 46: נדרש רקורסיבית מ & lsquo; const int X :: ערך '
- test.C: 2: 46: נדרש מ- & lsquo; const int X :: value '
- test.C: 2: 88: נדרש מכאן
- test.C: 2: 46: error: סוג לא שלם & lsquo; X 'בשימוש במפרט שם מקונן
- עם #fragma GCC ivdep החדש, המשתמש יכול לטעון כי אין תלויות שנשאו לולאה שימנעו ביצוע מקביל של איטרציות רצופות באמצעות הוראות SIMD (הוראות מרובות הוראות בודדות).
- תמיכה עבור Cilk Plus נוספה ויכולה להיות מופעלת עם אפשרות -fcilkplus. Cilk Plus הוא הרחבה לשפות C ו- C ++ לתמיכה בנתונים ובמקבילי משימות. הביצוע הנוכחי עוקב אחרי ABI גרסה 1.2; כל התכונות אבל _Cilk_for יושמו.
- נתמך ISO atomics C11 (המזהה סוג _Atomic ואת המאפיין ואת הכותרת) נתמכים כעת.
- נתמכות בחירות כלליות של ISO C11 (מילת מפתח _Generic).
- אחסון מקומי לאחסון C11 של ISO (_Thread_local, בדומה ל- GNU C __thread) נתמך כעת.
- תמיכת ISO C11 נמצאת כעת ברמה דומה של השלמות לתמיכת ISO C99: באגים מלאים של מודולו מלאים, מזהים מורחבים (נתמכים למעט במקרים בפינה כאשר משתמשים במזהים מבוססים), בעיות נקודה צפה (בעיקר אך לא לגמרי המתייחסות לתכונות C99 אופציונליות מ נספחים F ו - G) ו נספחים K אופציונליים K (ממשקי בדיקת גבולות) ו- L (analyseability).
- תוסף C חדש __auto_type מספק קבוצת משנה של הפונקציונליות של C + 11 אוטומטי ב- GNU C.
- C ++:
- יישום G + + של ניכוי סוג החזרת C + 1y עבור פונקציות רגילות עודכן כך שיתאים ל- N3638, ההצעה התקבלה לנייר העבודה. הכי חשוב, זה מוסיף decltype (אוטומטי) לקבלת סמנטיקה decltype ולא סמנטיקה נימוקים התמצאות תבנית של אוטומטי רגיל:
- int & amp; f ();
- auto i1 = f (); // int
- סוג דליפה (אוטומטי) i2 = f (); // int & amp;
- G + + תומך ב- C + 1y ללמדי לכידת לאמבדה:
- [x = 42] {...};
- למעשה, הם התקבלו מאז GCC 4.5, אך כעת המהדר אינו מזהיר עליהם ב- cd = c + 1y, ותומך גם באתחול של סוגריים וסגנונות.
- G + + תומך במערכי C + + 1 באורך משתנה. G + + תמך VANs בסגנון GNU / C99 במשך זמן רב, אבל עכשיו בנוסף תומך באתחול ו ללמדה ללכוד על ידי הפניה. במצב + C + 1y יתלונן על שימוש ב- VLA שאינו מותר על פי טיוטת התקן, כגון יצירת מצביע לסוג VLA או החלת גודל למשתנה VLA. שים לב כי כעת נראה כי VLAs לא יהיה חלק C + 14, אבל יהיה חלק מסמך נפרד ואז אולי C + 17.
- void f (int n) {
- int a [n] = {1, 2, 3}; // זורק std :: bad_array_length אם n & lt; 3
- [& amp; a] {עבור (int i: a) {cout
1 תגובות
http://www.eduwizzonlinetrainings.com 29 Dec 17
EduwizzOnlineTraining is one of the Best Online Training Institute in Hyderabad, Bangalore. Eduwizz provide courses like Hybris Development, WebSphere Commerce Server,Blockchain Training,Hyperledger Fabric Development ,Ethereum Development ,Commvault Training, Devops , Netapps , Mulesoft ESB ,Machine Learning,Data Science , Internet of Things , Hybris ,Angular JS , Node JS , Express JS , Business Analyst, Selenium testing with webdriver, Guidewire ,Adobe, RPA ,TSM, EMC...etc