GCC 15 do të përdorë standardin C23 si standart të paracaktuar

NĂ« kodin burimor, mbi tĂ« cilin Ă«shtĂ« formuar versioni i planifikuar pĂ«r pranverĂ«n e vitit tĂ« ardhshĂ«m tĂ« paketĂ«s sĂ« kompilatorĂ«ve GCC 15, Ă«shtĂ« pranuar njĂ« ndryshim qĂ« pĂ«rfshin pĂ«rdorimin si standart tĂ« paracaktuar tĂ« standardit C23 me zgjerimet GNU ('-std=gnu23') gjatĂ« kompilimit tĂ« programeve nĂ« gjuhĂ«n C (mĂ« parĂ« si standart tĂ« paracaktuar Ă«shtĂ« pĂ«rdorur standardi C17 — '-std=gnu17'). Ndryshimi potencialisht mund tĂ« çojĂ« nĂ« probleme gjatĂ« ndĂ«rtimit tĂ« projekteve ekzistuese, pasi standardi i ri ka dallime, tĂ« tilla si shtimi i konstantĂ«s nullptr, llojit _BitInt(n) dhe fjalĂ«ve kyçe bool, true dhe false, tĂ« cilat mund tĂ« bien nĂ« konflikt me identifikuesit e emĂ«ruar nĂ« aplikacione.

Standardi C23 (ISO/IEC 9899:2024) u publikua zyrtarisht nga organizata ndërkombëtare për standardizim (ISO) më 31 tetor 2024. Ndër ndryshimet në standardin e ri:

  • ËshtĂ« hequr mundĂ«sia e pĂ«rcaktimit tĂ« funksioneve nĂ« stilin K&R C, i pĂ«rdorur pĂ«rpara miratimit tĂ« specifikacionit ANSI C dhe i pĂ«rshkruar nĂ« librin 'The C Programming Language' tĂ« Kernighan dhe Ritchie. Stili K&R nĂ«nkupton pĂ«rshkrimin e tipeve tĂ« argumenteve pas pĂ«rcaktimit tĂ« funksionit, pĂ«r shembull, 'int add(a, b) int a, b; {}'
  • Parametrat e paemĂ«ruara tĂ« funksioneve - mosprania e emrave tĂ« parametrave tĂ« palidhur nĂ« definimin e funksioneve (si nĂ« C++). PĂ«r shembull, tani mund tĂ« shkruani «int f(int, int) { return 7; }».
  • MbĂ«shtetje pĂ«r sintaksĂ«n «[[emri]]» pĂ«r tĂ« pĂ«rcaktuar atribute si nĂ« C++ («[[gnu::const]]», «[[deprecated]]», «[[fallthrough]]», «[[maybe_unused]]», «[[nodiscard]]», «[[noreturn]]», «[[reproducible]]», «[[unsequenced]]»). PĂ«r shembull, atributi [[noreturn]] lejon tĂ« specifikohet se funksioni nuk kthen vlera (file header stdnoreturn.h dhe specifikatori «_Noreturn» janĂ« shpallur tĂ« vjetĂ«ruara).
  • MbĂ«shtetje pĂ«r sintaksĂ«n u8» pĂ«r tĂ« pĂ«rcaktuar konstantet me simbole nĂ« UTF-8.
  • Shtuar tipi char8_t pĂ«r vargje dhe simbole nĂ« kodimin UTF-8, si dhe funksione pĂ«r konvertimin e vargjeve me simbole me shumĂ« byte mbrtoc8() dhe c8rtomb().
  • Veprimi i fjalĂ«s kyçe «auto» Ă«shtĂ« ndryshuar, tani e cila çon nĂ« njoftimin e tipit kur definohen objektet, çka lejon pĂ«rdorimin e atributit «auto» nĂ« vend tĂ« tipit pĂ«r pĂ«rcaktimin e tipave tĂ« variablave tĂ« bazuar nĂ« tipin e shprehjes pĂ«r inicializimin e tyre. PĂ«r shembull: «auto y = cos(x);».
  • Funksionet me listĂ« argumetesh bosh tani trajtohen si funksione qĂ« nuk marrin argumente.
  • Shtimi i mbĂ«shtetjes pĂ«r skedarĂ«t e titullit dhe me makros, funksione dhe tipe pĂ«r verifikimin e llogaritjeve tĂ« numrave tĂ« plotĂ«.
  • Lejohet vendosja e etiketave tĂ« kalimit nĂ« çdo vend brenda shprehjeve tĂ« pĂ«rbatura.
  • PĂ«rkrahja e tri-grafĂ«ve nĂ« kod Ă«shtĂ« ndaluar, sekuencave tĂ« tre simboleve ASCII, tĂ« trajtuara si njĂ« simbol i vetĂ«m; pĂ«r shembull, sekuenca «??=» mund tĂ« pĂ«rdorej nĂ« vend tĂ« «#». Me paraqitjen e Unicode, mbĂ«shtetjes pĂ«r tri-grafĂ«t ka humbur kuptim.
  • Shtimi i mbĂ«shtetjes pĂ«r prefikset «0b» dhe «0B» pĂ«r tregimin e vlerave tĂ« plotĂ« nĂ« formĂ« binare, pĂ«r shembull, «int b = 0b101010».
  • Shtohen fjalĂ«t kyçe bool, static_assert, alignas, alignof dhe thread_local.
  • Lejohet specifikimi i kllozave tĂ« zbrazĂ«ta «{}» pĂ«r inicializimin nĂ« vlera zero, dmth tani mund tĂ« shkruhet «struct S { int x, y } s = {};».
  • TĂ« ofrohet mundĂ«sia pĂ«r tĂ« specifikuar çfarĂ«do emrave universale tĂ« simboleve nĂ« literalĂ«t simbole dhe string. PĂ«r shembull, «int \u0024 = 0;».
  • NĂ« «stddef.h» Ă«shtĂ« shtuar makros «unreachable».
  • Shto u shtua njĂ« lloj nullptr_t dhe konstantĂ«n nullptr pĂ«r pĂ«rcaktimin e treguesve tĂ« nul, tĂ« cilat mund tĂ« konvertohen nĂ« çdo lloj treguesi dhe tĂ« paraqesin variantin NULL, pa u lidhur me llojet numerike dhe llojin void*. PĂ«r shembull, mund tĂ« specifikohet «void func(nullptr_t); func(0); func((void *)0);».
  • Shtuar llojet «_BitInt (N)» dhe «unsigned _BitInt (N)» pĂ«r pĂ«rcaktimin e numrave tĂ« plotĂ« me njĂ« numĂ«r tĂ« specifikuar bitesh, si dhe llojet dekadale me pikĂ« tĂ« lĂ«vizshme «_Decimal32», «_Decimal64» dhe «_Decimal128» dhe funksionet pĂ«r tĂ« punuar me lloje tĂ« tillĂ«.
  • Shtuar mundĂ«sia e pĂ«rdorimit tĂ« simbolit «‘» pĂ«r ndarjen e qartĂ« tĂ« shifrave nĂ« numra (pĂ«r shembull, «1’000’000»).
  • E lejuar tĂ« pĂ«rcaktohen struktura, bashkime dhe enumerime mĂ« shumĂ« se njĂ« herĂ« nĂ« njĂ« hapĂ«sirĂ« tĂ« njĂ«jtĂ« me tĂ« njĂ«jtin pĂ«rmbajtje dhe etiketĂ« pĂ«rsĂ«ritĂ«se.
  • NĂ« standard janĂ« pĂ«rfshirĂ« operatorĂ«t typeof dhe typeof_unqual.
  • Ka mbĂ«shtetje pĂ«r pĂ«rdorimin e specifikuesit constexpr pĂ«r pĂ«rcaktimin e objekteve.
  • NĂ« skedarĂ«t e titujve float.h dhe math.h janĂ« shtuar makro INFINITY, NAN, FLT_NORM_MAX, DBL_NORM_MAX dhe LDBL_NORM_MAX.
  • Shtuar direktivat e pĂ«rpunimit tĂ« parakohshĂ«m #elifdef, #elifndef, #warning dhe #embed. «#embed» Ă«shtĂ« e destinuar pĂ«r integrimin e burimeve binarĂ«.
  • E lehtĂ«suar pĂ«rdorimi i listave me numĂ«r variabĂ«l argumentesh (variadic).
  • Zgjeruar mundĂ«sitĂ« e enumerimeve (enum).
  • Shtuar mbĂ«shtetje pĂ«r zĂ«vendĂ«simin "%b" pĂ«r trajtimin e vlerave binare nĂ« familjet e funksioneve printf() dhe scanf().
  • Thirrja e funksionit realloc() me madhĂ«si zero Ă«shtĂ« klasifikuar si sjellje e pacaktuar.
  • Standardizuar funksionet memccpy(), strdup(), strndup(), gmtime_r() dhe localtime_r().
  • Klasifikuar si tĂ« vjetruara funksionet asctime() dhe ctime().
  • Maksimat e static_assert dhe thread_local janĂ« kaluar nĂ« radhĂ«n e fjalĂ«ve kyç.

Burimi: opennet.ru

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster