GCC

نرم افزار تصویر:
GCC
جزئیات نرم افزار:
نسخه: 8.2.0 به روز شده
ها تاریخ: 16 Aug 18
توسعه دهنده: The GCC Team
پروانه: رایگان
محبوبیت: 182

Rating: 3.0/5 (Total Votes: 3)

GCC (مجموعه کامپایلر GNU) یک نرمافزار خط فرمان است که به عنوان یک کامپایلر برای سیستم عاملهای گنو / لینوکس و BSD عمل میکند. این شامل مواردی است که برای زبانهای برنامه نویسی متعدد، از جمله Objective-C، Go، C ++، Java، C، Ada و Fortran وجود دارد.


امکانات در یک نگاه

با GCC شما میتوانید پیکربندی، کامپایل و نصب برنامههای گنو / لینوکس را در سیستم عاملهای لینوکس یا BSD با استفاده از تنها آرشیو منبع برنامه مربوطه انجام دهید. با این حال، کاربران نیازی به تعامل با کامپایلر ندارند، زیرا به صورت خودکار توسط پیکربندی و ساخت اسکریپت انجام می شود.

این پروژه همچنین شامل کتابخانه ها برای زبان های برنامه نویسی مختلف مانند libstdc و libgcj می باشد و مانند بیشتر نرم افزار های GNU قبل از ساخت و نصب در رایانه شما باید پیکربندی شود.

همچنین می تواند مسیر کامل را به یک کتابخانه خاص، پوشه ها در مسیر جستجوی کامپایلر، مسیر کامل به یک مولفه خاص، دایرکتوری کتابخانه های هدف، پسوند sysroot که برای پیدا کردن سرصفحه ها و سه گانه نرمال شده گنو هدف قرار دارد، نمایش دهد.

علاوه بر این، گزینه های مختلف دیگری برای انتقال برخی از گزینه ها و بحث های جدا شده با کاما وجود دارد به اسمبلر، پیش پردازنده و لینکر، کامپایل و جمع آوری بدون لینک، ایجاد یک کتابخانه به اشتراک گذاشته شده و بسیاری دیگر.


طراحی شده برای سیستم عامل گنو

در ابتدا به عنوان کامپایلر اصلی برای سیستم عامل گنو نوشته شده است، GCC (مجموعه کامپایلر گنو) به عنوان یک نرم افزار آزاد 100٪ توسعه یافته و به طور پیش فرض روی هر توزیع لینوکس نصب شده است.

این نرم افزار همچنین توسط توسعه دهندگان Open Source برای تدوین برنامه های خود استفاده می شود. خط فرمان با گزینه های متعددی همراه است که می توانیم توانایی نمایش پردازنده مقصد کامپایلر و همچنین مسیر نسبی به کتابخانه های OS را ذکر کنیم.


خط پایین

در کل، GCC یکی از اجزای ضروری هر سیستم عامل لینوکس GNU / Linux است. نه تنها ما می توانیم بدون آن جهان را تصور کنیم، بلکه GCC دلیل اصلی کل اکوسیستم منبع باز است.

چه جدید در این نسخه است:

GCC 7.3 یک رفع اشکال از شاخه GCC 7 است که دارای اصلاحات مهم برای رگرسیون ها و اشکالات جدی در GCC 7.2 با بیش از 99 اشکالات ثابت شده از زمان انتشار قبلی است.
این نسخه شامل گزینه های تولید کد برای کاهش Specter Variant 2 (CVE 2017-5715) برای اهداف x86 و powerpc می باشد.

چه جدید در نسخه 8.1.0 منتشر شده است:

GCC 7.3 یک رفع اشکال از شاخه GCC 7 است که دارای اصلاحات مهم برای رگرسیون ها و اشکالات جدی در GCC 7.2 با بیش از 99 اشکالات از زمان انتشار قبلی ثابت شده است.
این نسخه شامل گزینه های تولید کد برای کاهش Specter Variant 2 (CVE 2017-5715) برای اهداف x86 و powerpc می باشد.

چه جدید در این نسخه است:


GCC 7.1 یک انتشار عمده حاوی قابلیت های قابل توجه جدید است که در GCC 6.x یا نسخه های GCC قبلی موجود نیست. مدخل C ++ در حال حاضر دارای پشتیبانی آزمایشی برای تمامی پیشنویس های C ++ در حال حاضر با گزینه های -std = c ++ 1z و -std = gnu ++ 1z است و کتابخانه libstdc ++ دارای بیشترین پیشنمایش C ++ 17 است ویژگی های کتابخانه نیز اجرا شده است. این ویژگی ویژگی های پیشرفت های مختلف در تشخیص منتشر شده، از جمله مکان های بهبود یافته، محدوده مکان، پیشنهادات برای شناسه های اشتباه، نام گزینه ها، نکات fix-it و هشدارهای مختلف جدید اضافه شده است. بهینه سازان بهبود یافته اند، با بهبود در تمام بهینه سازی درونی و بین پردازشی، بهینه سازی زمان لینک و باند های مختلف هدف، از جمله، اما نه محدود به، اضافه شده از پاسپورت ادغام فروشگاه، بهینه سازی کیت ذخیره سازی، تقسیم حلقه، و کوچک بسته بندی پیشرفت آدرس Sanitizer هم اکنون می توانید استفاده از متغیرها را پس از خروج از دامنه خود گزارش دهید. GCC اکنون می تواند برای OpenMP 4.5 بارگیری در NVIDIA PTX GPGPU ها پیکربندی شود.

چه جدید در نسخه 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 پشتیبانی کامل C ++ 11 و کامل C ++ 14 را پشتیبانی می کند. پشتیبانی کامل از C ++ 11 با اتخاذ ABI دوگانه امکان پذیر است، برای اطلاعات بیشتر به https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html مراجعه کنید.
اکنون C-front به طور پیش فرض به حالت C11 با پسوند GNU است که بر معانی کلمات کلیدی درون خطی تاثیر می گذارد و چندین تغییر قابل مشاهده کاربر را به وجود می آورد. برای اطلاعات بیشتر به https://gcc.gnu.org/gcc-5/porting_to.html مراجعه کنید. .
GCC 5.1 دارای پیشرفتهای بهینه سازی مختلف بین پرونده ای است، به عنوان مثال یک پاسپورت IPA جدید IPA جدید و پیشرفت های LTO مختلف، به عنوان مثال ادغام ادغام انواع C ++ در ODR، http://hubicka.blogspot.cz/2015/04/GCC5-IPA-LTO-news.html را برای جزئیات بیشتر مشاهده کنید.
GCC 5.1 Local Register Allocator در حال حاضر حاوی زیرپردازنده reaterialization، در i 86 / x86-64 قادر به استفاده مجدد سخت افزاری PIC برای بهبود عملکرد کد مستقل موقعیت است، یک فرایند RA بین پرونده ای ساده و سایر دیگر بهبود های ثبت نام ثبت شده وجود دارد اضافه.

GCC 5.1 پشتیبانی جزئی برای استاندارد OpenACC را پشتیبانی می کند، پشتیبانی OpenMP 4.0 برای شتابدهی های آینده Xeon Phi Intel و پشتیبانی از آزاد سازی OpenACC به PTX. Sanitizer رفتار Undefined در GCC با افزودن چک های مختلف زمان اجرا جدید گسترش یافته است. یک کتابخانه مجتمع JIT GCC در GCC 5.1 اضافه شده است.

چه جدید در نسخه 4.8.4 جدید است:

بهینه سازی عمومی بهینه سازی:
AddressSanitizer، یک شناسه خطای حافظه سریع، در حال حاضر در ARM در دسترس است.
UndefinedBehaviorSanitizer (ubsan)، یک آشکارساز رفتار ناشناخته سریع، اضافه شده است و می تواند از طریق -fsanitize = undefined فعال شود. محاسبات گوناگون برای شناسایی رفتار نامشخص در زمان اجرا ابزار خواهد بود. UndefinedBehaviorSanitizer در حال حاضر برای زبان های C و C ++ در دسترس است.
بهینه سازی زمان پیوند (LTO):
ادغام نوع بازنویسی شد پیاده سازی جدید به میزان قابل توجهی سریعتر است و از حافظه کمتر استفاده می کند.
الگوریتم پارتیشن بندی بهتر باعث کاهش جریان در زمان پیوند می شود.
حذف زودهنگام روشهای مجازی، حجم فایلهای شیء را کاهش می دهد و استفاده از حافظه زمان اتصال را بهبود می بخشد و زمان کامپایل را بهبود می بخشد.
بدنهای تابع در حال حاضر بر روی تقاضا بارگیری شده و به زودی بهبود کلی حافظه در زمان پیوند منتشر می شود.
C ++ روش های مخفی شده را می توان اکنون بهینه سازی کرد.در هنگام استفاده از پلاگین لینکر، کامپایل با گزینه -flto در حال حاضر فایل های شیء یاب (.o) را تولید می کند که تنها شامل نمایه زبان متوسط ​​برای LTO می باشد. از فایل -fat-lto -objects برای ایجاد فایل هایی که علاوه بر این شامل کد هدف هستند استفاده کنید. برای ایجاد کتابخانه های ایستا مناسب برای پردازش LTO، از gcc-ar و gcc-ranlib استفاده کنید. برای نمایش نمادهای از یک فایل شیء باریک از gcc-nm استفاده کنید. (این نیازمند آن است که ar، ranlib و nm با پشتیبانی افزونه کامپایل شده اند.)
ساختار حافظه فایرفاکس با اشکالزدایی فعال از 15 گیگابایت تا 3.5 گیگابایت کاهش یافت؛ زمان پیوند از 1700 ثانیه تا 350 ثانیه.
پیشرفت بهینه سازی بین مراحل:
ماژول تجزیه و تحلیل نوع توارث جدید، بهبود devirtualization. Devirtualization در حال حاضر به نام نام فضایی ناشناس و C ++ 11 کلید واژه نهایی را در نظر می گیرد.
تصویب جدید تجدید نظر (controlled by -fdevirtualize-speculatively.
تماس هایی که به صورت تفصیلی مستقیم انجام می شوند، به غیر مستقیم تبدیل می شوند که در آن تماس مستقیم ارزان تر نیست.
aliases محلی برای نمادهای شناخته شده هستند که معناشناختی معادل در میان کتابخانه های اشتراکی به وجود آمده است که باعث بهبود زمان پیوند پویا می شود.
بازخورد بهبود بهینه سازی:پروفایل های برنامه های کاربردی C ++ در حال حاضر قابل اعتماد تر است.
پروفیل زمان جدید تعیین سفارش معمولی که در آن توابع اجرا می شوند.
یک تابع مجدد تابع جدید (کنترل شده توسط -freorder-توابع) به طور قابل توجهی زمان راه اندازی برنامه های بزرگ را کاهش می دهد. تا زمانی که پشتیبانی Binutils تکمیل شود، تنها با بهینه سازی زمان پیوند موثر است.
در حال حاضر تماس های تلفنی تماس مستقیم با تماس های تلفنی غیرمستقیم و غیر فعال کردن تماس ها برقرار می شود.
جدیدی از زبان ها و پیشرفت های خاص زبان:
نسخه 4.0 از مشخصات OpenMP در حال حاضر در کامپایلرهای C و C ++ پشتیبانی می شود و با انتشار 4.9.1 نیز در کامپایلر Fortran آغاز می شود. گزینه new -fopenmp-simd می تواند برای فعال کردن دستورالعمل SIMD OpenMP و در نادیده گرفتن دستورات OpenMP دیگر استفاده شود. گزینه new -fsimd-cost-model = اجازه می دهد تا مدل هزینه برداری را برای حلقه های حاوی دستورالعمل های OpenMP و Cilk Plus مجددا تنظیم کنید. -Wopenmp-simd هشدار می دهد زمانی که مدل هزینه فعلی دستورات simd را که توسط کاربر تعیین شده است را از بین می برد.گزینه -Wdate-time برای کامپایلرهای C، C ++ و Fortran اضافه شده است، که هنگام استفاده از ماکرو __DATE__، __TIME__ یا __TIMESTAMP__ هشدار می دهد. این ماکروها ممكن است كمیسیونهای قابل تجدید پذیر را به صورت كاملا مشابه یكسان كنند.
آدا:
GNAT به طور پیش فرض Ada 2012 به جای Ada 2005 تغییر یافت.
خانواده C:
پشتیبانی از تشخیص رنگ آمیزی منتشر شده توسط GCC اضافه شده است. -fdiagnostics-color = auto آن را هنگام خروج به ترمینال فعال می کند، -fdiagnostics-color = همیشه بدون قید و شرط. متغیر محیط GCC_COLORS می تواند برای سفارشی کردن رنگ ها یا غیر فعال کردن رنگ استفاده شود. اگر متغیر GCC_COLORS در محیط حضور داشته باشد، default -fdiagnostics-color = auto است، در غیر این صورت -fdiagnostics-color = هرگز.
خروجی تشخیص نمونه:
$ g ++ -fdiagnostics-color = always -S -Wall test.C
test.C: در عمل & lsquo؛ int foo () ':
test.C: 1: 14: هشدار: هیچ دستور بازگشتی در عملکرد return non-void [-Wreturn type]
int foo () {}
test.C: 2: 46: error: عمق انطباق قالب بیش از حداکثر 900 (استفاده از "عمومیت = عمق = برای افزایش حداکثر")، اکتساب کردن & lsquo؛ ساختار X '
ساختار الگو X {static const int value = X :: value؛ }؛ الگو struct X؛test.C: 2: 46: مجددا از & lsquo؛ const int X :: value '
test.C: 2: 46: مورد نیاز از & lsquo؛ const int X :: value '
test.C: 2: 88: مورد نیاز از اینجا
test.C: 2: 46: خطا: نوع ناقص و & quot؛ X 'در نام شناسه توزیع شده استفاده می شود
با #pragma new GCC ivdep، کاربر می تواند ادعا کند که هیچ وابستگی حلقه وجود ندارد که از دستورالعمل SIMD (دستورالعمل چندگانه تک دستورالعمل) جلوگیری می کند اجرای همزمان تکرارهای متوالی.
پشتیبانی از Cilk Plus اضافه شده است و می تواند با گزینه -fcilkplus فعال شود. Cilk Plus فرمت زبان C و C ++ برای پشتیبانی از داده ها و همپوشانی کاری است. اجرای فعلی به شرح زیر است: ABI version 1.2؛ تمام ویژگی های اما _Cilk_for اجرا شده است.
ISO C11 atomics (مشخص کننده نوع تابع نوع اتمی و تعریف و هدر) در حال حاضر پشتیبانی می شوند.
ایزو C11 انتخاب عمومی (کلیدی _Generic) در حال حاضر پشتیبانی می شود.
ذخیره سازی محلی رشته ISO C11 (_Thread_local، شبیه به GNU C __thread) در حال حاضر پشتیبانی می شود.پشتیبانی ISO C11 در حال حاضر در سطح مشابهی از تکمیل پشتیبانی ISO C99 است: بطور قابل ملاحظه ای تکمیل اشکالات، شناسه های گسترده (پشتیبانی می کند به جز موارد گوشه ای که هنگام استفاده از شناسه های فشرده استفاده می شود)، مسائل مربوط به شناور (عمدتا، اما نه کاملا مربوط به اختیاری ویژگی های C99 از پیوست های F و G) و افزونه های اختیاری K (رابط های بررسی مجدد) و L (Analyzability).
یک پلاگین C جدید __auto_type یک زیر مجموعه از عملکرد خودکار C ++ 11 را در GNU C فراهم می کند.
سی ++:
پیاده سازی G ++ از C ++ 1y نوع کسر بازگشت برای توابع طبیعی به روز شده برای مطابقت با N3638، پیشنهاد پذیرفته شده در مقاله کار شده است. مهمتر از همه، به معنای لغوی (خودکار) برای دستیابی به معانی لغوی، به جای معناشناسی کوانتمبندی قالب از خودکار ساده، اضافه میکند:
اینتر & amp؛ f ()؛
خودکار i1 = f ()؛ // int
decltype (auto) i2 = f ()؛ // int & amp؛
G ++ از اولویت بندی های C ++ 1y لامبدا پشتیبانی می کند:
[x = 42] {...}؛
در واقع آنها از GCC 4.5 پذیرفته شده اند، اما در حال حاضر کامپایلر در مورد آنها با -std = c ++ 1y هشدار نمی دهد و همچنین از اولویت بندی های پرانتز و پرانتز نیز پشتیبانی می کند.

G ++ از آرایه های متغیر C ++ 1y پشتیبانی می کند. G ++ مدتهاست که VLA های گنو / C99 را پشتیبانی می کند، اما در حال حاضر علاوه بر این، ابتدایی ها و ضبط لامبدا را با مرجع پشتیبانی می کند. در حالت C ++ 1+ G ++ از VLA استفاده می کند که توسط پیش نویس استاندارد مجاز نیست، مانند شکل دادن به یک اشاره گر به نوع VLA یا استفاده از sizeof به متغیر VLA. توجه داشته باشید که اکنون ظاهر می شود که VLA ها بخشی از 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 = undefined فعال شود. محاسبات گوناگون برای شناسایی رفتار نامشخص در زمان اجرا ابزار خواهد بود. UndefinedBehaviorSanitizer در حال حاضر برای زبان های C و C ++ در دسترس است.
بهینه سازی زمان پیوند (LTO):
ادغام نوع بازنویسی شد پیاده سازی جدید به میزان قابل توجهی سریعتر است و از حافظه کمتر استفاده می کند.
الگوریتم پارتیشن بندی بهتر باعث کاهش جریان در زمان پیوند می شود.
حذف زودهنگام روشهای مجازی، حجم فایلهای شیء را کاهش می دهد و استفاده از حافظه زمان اتصال را بهبود می بخشد و زمان کامپایل را بهبود می بخشد.
بدنهای تابع در حال حاضر بر روی تقاضا بارگیری شده و به زودی بهبود کلی حافظه در زمان پیوند منتشر می شود.
C ++ روش های مخفی شده را می توان اکنون بهینه سازی کرد.هنگام استفاده از پلاگین لینکر، کامپایل با گزینه -flto در حال حاضر فایلهای اشیاء باریک (.o) را تولید می کند که تنها شامل نمایندگی زبان متوسط ​​برای LTO می باشد. از فایل -fat-lto -objects برای ایجاد فایل هایی که علاوه بر این شامل کد هدف هستند استفاده کنید. برای ایجاد کتابخانه های ایستا مناسب برای پردازش LTO، از gcc-ar و gcc-ranlib استفاده کنید. برای نمایش نمادهای از یک فایل شیء باریک از gcc-nm استفاده کنید. (لازم است که ar، ranlib و nm با پشتیبانی افزونه کامپایل شده باشند.)
ساختار حافظه فایرفاکس با اشکالزدایی فعال از 15 گیگابایت تا 3.5 گیگابایت کاهش یافت؛ زمان پیوند از 1700 ثانیه تا 350 ثانیه.
پیشرفت بهینه سازی بین مراحل:
ماژول تجزیه و تحلیل نوع توارث جدید، بهبود devirtualization. Devirtualization در حال حاضر به نام نام فضایی ناشناس و C ++ 11 کلید واژه نهایی را در نظر می گیرد.
تصویب جدید تجدید نظر (controlled by -fdevirtualize-speculatively.
تماس هایی که به صورت تفصیلی مستقیم انجام می شوند، به غیر مستقیم تبدیل می شوند که در آن تماس مستقیم ارزان تر نیست.
aliases محلی برای نمادهای شناخته شده هستند که معناشناختی معادل در میان کتابخانه های اشتراکی به وجود آمده است که باعث بهبود زمان پیوند پویا می شود.
بازخورد بهبود بهینه سازی:پروفایل های برنامه های کاربردی C ++ در حال حاضر قابل اعتماد تر است.
پروفیل زمان جدید تعیین سفارش معمولی که در آن توابع اجرا می شوند.
یک تابع مجدد تابع جدید (کنترل شده توسط -freorder-توابع) به طور قابل توجهی زمان راه اندازی برنامه های بزرگ را کاهش می دهد. تا زمانی که پشتیبانی Binutils تکمیل شود، تنها با بهینه سازی زمان پیوند موثر است.
در حال حاضر تماس های تلفنی تماس مستقیم با تماس های تلفنی غیرمستقیم و غیر فعال کردن تماس ها برقرار می شود.
جدیدی از زبان ها و پیشرفت های خاص زبان:
نسخه 4.0 از مشخصات OpenMP در حال حاضر برای کامپایلرهای C و C ++ پشتیبانی می شود. گزینه new -fopenmp-simd می تواند برای فعال کردن دستورالعمل SIMD OpenMP و در نادیده گرفتن دستورات OpenMP دیگر استفاده شود. گزینه new -fsimd-cost-model = اجازه می دهد تا مدل هزینه برداری را برای حلقه های حاوی دستورالعمل های OpenMP و Cilk Plus مجددا تنظیم کنید. -Wopenmp-simd هشدار می دهد زمانی که مدل costmod current جریمه simd دستورالعمل های کاربر را تعیین می کند.
گزینه -Wdate-time برای کامپایلرهای C، C ++ و Fortran اضافه شده است، که هنگام استفاده از ماکرو __DATE__، __TIME__ یا __TIMESTAMP__ هشدار می دهد. این ماکروها ممكن است كمیسیونهای قابل تجدید پذیر را به صورت كاملا مشابه یكسان كنند.آدا:
GNAT به طور پیش فرض Ada 2012 به جای Ada 2005 تغییر یافت.
خانواده C:
پشتیبانی از تشخیص رنگ آمیزی منتشر شده توسط GCC اضافه شده است. -fdiagnostics-color = auto آن را هنگام خروج به ترمینال فعال می کند، -fdiagnostics-color = همیشه بدون قید و شرط. متغیر محیط GCC_COLORS می تواند برای سفارشی کردن رنگ ها یا غیر فعال کردن رنگ استفاده شود. اگر متغیر GCC_COLORS در محیط حضور داشته باشد، default -fdiagnostics-color = auto است، در غیر این صورت -fdiagnostics-color = هرگز.
خروجی تشخیص نمونه:
$ g ++ -fdiagnostics-color = always -S -Wall test.C
test.C: در عمل & lsquo؛ int foo () ':
test.C: 1: 14: هشدار: هیچ دستور بازگشتی در عملکرد return non-void [-Wreturn type]
int foo () {}
test.C: 2: 46: error: عمق انطباق قالب بیش از حداکثر 900 (استفاده از "عمومیت = عمق = برای افزایش حداکثر")، اکتساب کردن & lsquo؛ ساختار X '
ساختار الگو X {static const int value = X :: value؛ }؛ الگو struct X؛
test.C: 2: 46: مجددا از & lsquo؛ const int X :: value '
test.C: 2: 46: مورد نیاز از & lsquo؛ const int X :: value '
test.C: 2: 88: مورد نیاز از اینجاtest.C: 2: 46: خطا: نوع ناقص و & quot؛ X 'در نام شناسه توزیع شده استفاده می شود
با #pragma new GCC ivdep، کاربر می تواند ادعا کند که هیچ وابستگی حلقه وجود ندارد که از دستورالعمل SIMD (دستورالعمل چندگانه تک دستورالعمل) جلوگیری می کند اجرای همزمان تکرارهای متوالی.
پشتیبانی از Cilk Plus اضافه شده است و می تواند با گزینه -fcilkplus فعال شود. Cilk Plus فرمت زبان C و C ++ برای پشتیبانی از داده ها و همپوشانی کاری است. اجرای فعلی به شرح زیر است: ABI version 1.2؛ تمام ویژگی های اما _Cilk_for اجرا شده است.
ISO C11 atomics (مشخص کننده نوع تابع نوع اتمی و تعریف و هدر) در حال حاضر پشتیبانی می شوند.
ایزو C11 انتخاب عمومی (کلیدی _Generic) در حال حاضر پشتیبانی می شود.
ذخیره سازی محلی رشته ISO C11 (_Thread_local، شبیه به GNU C __thread) در حال حاضر پشتیبانی می شود.پشتیبانی ISO C11 در حال حاضر در سطح مشابهی از تکمیل پشتیبانی ISO C99 است: بطور قابل ملاحظه ای تکمیل اشکالات، شناسه های گسترده (پشتیبانی می کند به جز موارد گوشه ای که هنگام استفاده از شناسه های فشرده استفاده می شود)، مسائل مربوط به شناور (عمدتا، اما نه کاملا مربوط به اختیاری ویژگی های C99 از پیوست های F و G) و افزونه های اختیاری K (رابط های بررسی مجدد) و L (Analyzability).
یک پلاگین C جدید __auto_type یک زیر مجموعه از عملکرد خودکار C ++ 11 را در GNU C فراهم می کند.
سی ++:
پیاده سازی G ++ از C ++ 1y نوع کسر بازگشت برای توابع طبیعی به روز شده برای مطابقت با N3638، پیشنهاد پذیرفته شده در مقاله کار شده است. مهمتر از همه، به معنای لغوی (خودکار) برای دستیابی به معانی لغوی، به جای معناشناسی کوانتمبندی قالب از خودکار ساده، اضافه میکند:
اینتر & amp؛ f ()؛
خودکار i1 = f ()؛ // int
decltype (auto) i2 = f ()؛ // int & amp؛
G ++ از اولویت بندی های C ++ 1y لامبدا پشتیبانی می کند:
[x = 42] {...}؛
در واقع آنها از GCC 4.5 پذیرفته شده اند، اما در حال حاضر کامپایلر در مورد آنها با -std = c ++ 1y هشدار نمی دهد و همچنین از اولویت بندی های پرانتز و پرانتز نیز پشتیبانی می کند.G ++ از آرایه های متغیر C ++ 1y پشتیبانی می کند. G ++ مدتهاست که VLA های گنو / C99 را پشتیبانی می کند، اما در حال حاضر علاوه بر این، ابتدایی ها و ضبط لامبدا را با مرجع پشتیبانی می کند. در حالت C ++ 1+ G ++ از VLA استفاده می کند که توسط پیش نویس استاندارد مجاز نیست، مانند شکل دادن به یک اشاره گر به نوع VLA یا استفاده از sizeof به متغیر VLA. توجه داشته باشید که اکنون ظاهر می شود که VLA ها بخشی از 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

نرم افزار های مشابه

نظرات به GCC

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
اضافه کردن نظر
روشن کردن تصاویر!