C17 (C standard revision)

{{short description|C programming language standard, 2017 revision}}

{{confused|C++17}}

{{C language revisions}}

C17, formally ISO/IEC 9899:2018,{{cite web

|url=https://www.iso.org/standard/74528.html

|title=ISO/IEC 9899:2018 - Information technology -- Programming languages -- C

|website=International Organization for Standardization

|access-date=2025-04-16

|url-status=live

|archive-url=https://web.archive.org/web/20250401034812/https://www.iso.org/standard/74528.html

|archive-date=2025-04-01

}} is an open standard for the C programming language, prepared in 2017 and published on 2018-07-05. It replaced C11 (standard ISO/IEC 9899:2011),{{cite web|url=http://www.iso-9899.info/wiki/The_Standard|title=The Standard - C|website=www.iso-9899.info}} and is superseded by C23 (ISO/IEC 9899:2024) since October 2024.{{Cite web|url=http://www.open-std.org/jtc1/sc22/wg14/www/wg14_document_log.htm|title=WG 14 Document log|website=www.open-std.org}} Since it was under development in 2017, and officially published in 2018, C17 is sometimes referred to as C18.{{Cite web|url=https://gcc.gnu.org/onlinedocs/gcc-8.1.0/gcc/C-Dialect-Options.html#index-std-1|title=Using the GNU Compiler Collection (GCC): C Dialect Options|website=gcc.gnu.org}}

Changes from C11

C17 fixes numerous minor defects in C11 without introducing new language features.

The __STDC_VERSION__ macro is increased to the value 201710L.

For a detailed list of changes from the previous standard, see Clarification Request Summary for C11.{{cite web |author1=ISO/IEC JTC1/SC22/WG14 |title=Clarification Request Summary for C11 Version 1.13 |url=http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm |website=www.open-std.org |access-date=28 September 2020 |date=October 2017}}

Compiler support

List of compilers supporting C17:

  • GCC 8.1.0{{Cite web|url=https://gcc.gnu.org/onlinedocs/gcc-8.1.0/gcc/C-Dialect-Options.html#index-std-1|title=Using the GNU Compiler Collection (GCC): C Dialect Options|website=gcc.gnu.org}}
  • LLVM Clang 7.0.0{{Cite web|url=http://releases.llvm.org/7.0.0/tools/clang/docs/UsersManual.html#differences-between-various-standard-modes|title=Clang 7 documentation — Clang Compiler User's Manual}}
  • IAR EWARM v8.40.1{{Cite web|url=https://netstorage.iar.com/SuppDB/Public/UPDINFO/013857/arm/doc/infocenter/readme.ENU.html|title=IAR Information Center for Arm - Release notes|website=netstorage.iar.com}}
  • Microsoft Visual C++ VS 2019 (16.8){{cite web|url=https://devblogs.microsoft.com/cppblog/c11-and-c17-standard-support-arriving-in-msvc/|title=C11 and C17 Standard Support Arriving in MSVC|date=14 September 2020|website=devblogs.microsoft.com}}
  • Pelles C 9.00{{Cite web|url=http://www.smorgasbordet.com/pellesc/changes_800_900.htm |title=Changelog - Added support for new C17 standard|website=www.smorgasbordet.com/pellesc/}}

See also

{{Portal|Computer programming}}

References

{{Reflist}}

Further reading

  • [https://web.archive.org/web/20181230041359/http://www.open-std.org/jtc1/sc22/wg14/www/abq/c17_updated_proposed_fdis.pdf N2176] (final draft of C17 standard); WG14; 2017-10-09.

  • [https://web.archive.org/web/20190407010015/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2310.pdf N2310] (post-C17, very early draft of what would become C23; WG14; 2018-11-11.
  • [https://www.iso.org/standard/74528.html ISO/IEC 9899:2018] (official C17 standard); ISO; 2018.