Ang GCC 15 mogamit sa C23 nga sumbanan sa default

Ang code base nga gigamit sa pagtukod sa GCC 15 compiler suite nga naka-iskedyul sa pagpagawas sa sunod nga tingpamulak giusab aron gamiton ang C23 nga sumbanan nga adunay mga extension sa GNU ("-std=gnu23") isip default sa dihang nag-compile sa C nga mga programa (kaniadto ang C17 standard gigamit sa default - "-std=gnu17"). Ang pagbag-o mahimo’g hinungdan sa mga problema kung magtukod mga naglungtad nga mga proyekto, tungod kay ang bag-ong sumbanan naglakip sa mga kalainan sama sa pagdugang sa nullptr constant, ang _BitInt(n) nga tipo, ug ang bool, true, ug false keywords, nga mahimong magkasumpaki sa mga identifier sa parehas nga ngalan nga gihubit sa mga aplikasyon.

Ang Standard C23 (ISO/IEC 9899:2024) opisyal nga gimantala sa International Organization for Standardization (ISO) niadtong Oktubre 31, 2024. Lakip sa mga kausaban sa bag-ong sumbanan:

  • Gikuha ang abilidad sa paghubit sa mga function sa K&R C style nga gigamit sa wala pa ang ANSI C specification ug gihulagway sa Kernighan ug Ritchie's The C Programming Language. Ang estilo sa K&R nagpasabot sa pagdeklara sa mga tipo sa argumento human sa kahulugan sa function, pananglitan, "int add(a, b) int a, b; {}»
  • Wala hinganli nga mga parametro sa function - dili kinahanglan nga ipiho ang mga ngalan sa wala magamit nga mga parametro sa pagtino sa mga gimbuhaton (sama sa C++). Pananglitan, mahimo nimong isulat ang "int f(int, int) {balik 7; }».
  • Suporta alang sa "[[ngalan]]" nga syntax para sa paghubit sa mga hiyas sama sa C++ ("[[gnu::const]]", "[[deprecated]]", "[[fallthrough]]", "[[maybe_unused]]", "[[nodiscard]]", "[[noreturn]]", "[[reproducible]"]", "[[mausab]"). Pananglitan, ang [[noreturn]] attribute nagtugot kanimo sa pagtino nga ang usa ka function wala magbalik og mga bili (ang stdnoreturn.h header file ug ang "_Noreturn" specifier wala na gigamit).
  • Suporta para sa "u8" syntax para sa pagdeterminar sa mga constant nga adunay UTF-8 nga mga karakter.
  • Gidugang ang char8_t type para sa UTF-8 nga naka-encode nga mga kuwerdas ug mga karakter, ingon man mga gimbuhaton alang sa pag-convert sa mga kuwerdas nga adunay multibyte nga mga karakter nga mbrtoc8() ug c8rtomb().
  • Ang epekto sa "auto" nga keyword giusab aron mahimong hinungdan sa type inference sa pag-define sa mga butang, nga gitugotan ang "auto" nga bandila nga gamiton imbes nga usa ka tipo aron mahibal-an ang klase sa mga variable base sa tipo sa ekspresyon nga gigamit sa pagsugod niini. Pananglitan: "auto y = cos(x);".
  • Ang mga gimbuhaton nga adunay usa ka walay sulod nga lista sa argumento karon giisip nga mga gimbuhaton nga wala’y mga argumento.
  • Gidugang nga suporta alang sa mga file sa header Ug nga adunay mga macro, mga gimbuhaton ug mga tipo alang sa pagsusi sa mga kalkulasyon sa integer.
  • Gitugotan nga ibutang ang mga label sa transisyon bisan asa sulod sa compound nga mga ekspresyon.
  • Ang code dili na mosuporta sa mga trigraph, mga han-ay sa tulo ka ASCII nga mga karakter nga giisip nga usa ka karakter, pananglitan, ang sequence "??=" mahimong gamiton imbes nga "#". Pagkahuman sa pag-abut sa Unicode, ang suporta alang sa mga trigraph nahimong wala’y kahulogan.
  • Gidugang nga suporta alang sa "0b" ug "0B" nga mga prefix aron mahibal-an ang mga kantidad sa integer sa binary nga porma, pananglitan. "int b = 0b101010".
  • Gidugang ang bool, static_assert, alignas, alignof ug thread_local nga mga keyword.
  • Ang mga walay sulod nga bracket nga "{}" gitugotan nga gamiton para sa pagsugod sa zero values, i.e. karon mahimo nimong isulat ang "struct S {int x, y } s = {};".
  • Gihatag ang abilidad sa pagpiho sa bisan unsang unibersal nga mga ngalan sa simbolo sa karakter ug mga string nga literal. Pananglitan, "int \u0024 = 0;".
  • Ang macro "unreachable" gidugang sa "stddef.h".
  • Nagdugang ug bag-ong nullptr_t type ug nullptr constant para ipasabot ang null pointer nga mabag-o sa bisan unsang pointer type ug nagrepresentar sa variant sa NULL nga wala mahigot sa integer type o void*. Pananglitan, mahimo nimong ipiho ang "void func(nullptr_t); func(0); func((void *)0);».
  • Gidugang ang "_BitInt(N)" ug "unsigned _BitInt(N))" nga mga tipo para sa pagdeterminar sa mga integer nga adunay espesipikong gidaghanon sa mga bits, ingon man ang decimal floating-point nga mga tipo "_Decimal32", "_Decimal64" ug "_Decimal128" ug mga function para sa pagtrabaho sa maong mga tipo.
  • Gidugang ang abilidad sa paggamit sa "'" nga simbolo sa biswal nga pagbulag sa mga digit sa mga numero (pananglitan, "1'000'000").
  • Gitugotan ang mga istruktura, unyon, ug enumerasyon nga mahubit labaw pa sa kausa sa parehas nga sakup nga adunay parehas nga sulud ug gibalikbalik nga tag.
  • Ang sumbanan naglakip sa tipo ug tipo sa_dili managsama nga mga operator,
  • Gidugang ang suporta alang sa paggamit sa constexpr specifier aron mahibal-an ang mga butang.
  • Ang INFINITY, NAN, FLT_NORM_MAX, DBL_NORM_MAX ug LDBL_NORM_MAX macros gidugang sa float.h ug math.h header files.
  • Gidugang ang preprocessor nga mga direktiba #elifdef, #elifndef, #warning ug #embed. Ang "#embed" gituyo alang sa paghiusa sa binary resources.
  • Ang paggamit sa variadic nga mga listahan gipasayon.
  • Ang mga kapabilidad sa mga enumerasyon gipalapdan.
  • Gidugang nga suporta alang sa "%b" nga pagpuli alang sa pagdumala sa binary nga mga kantidad sa printf () ug scanf () nga mga pamilya sa mga gimbuhaton.
  • Ang pagtawag sa realloc() nga adunay zero nga gidak-on karon dili matino nga pamatasan.
  • Ang memccpy(), strdup(), strnup(), gmtime_r() ug localtime_r() nga mga gimbuhaton gi-standardize.
  • Ang asctime() ug ctime() function wala na gamita.
  • Ang static_assert ug thread_local macros gibalhin sa keyword category.

Source: opennet.ru

Pagpalit kasaligan nga pag-host alang sa mga site nga adunay proteksyon sa DDoS, mga server sa VPS VDS 🔥 Pagpalit og kasaligang website hosting nga adunay proteksyon sa DDoS, VPS VDS servers | ProHoster