development and pending approval, including the fifth and final part of TS 18661, a software transactional memory specification, and parallel library extensions. Support from major compilers ANSI C is now supported by almost all the widely used compilers. GCC and Clang are two major C compilers popular today, both are based on the C11 with updates including changes from later specifications such as C17 and C18. Any source code written only in standard C and without any hardware dependent assumptions is virtually guaranteed to compile correctly on any platform with a conforming C implementation. Without such precautions, most programs may compile only on a certain platform or with a particular compiler, due, for example, to the use of non-standard libraries, such as GUI libraries, or to the reliance on compiler- or platform-specific attributes such as the exact size of certain data types and byte endianness. Compliance detectability To mitigate the differences between K&R C and the ANSI C standard, the ("standard c") macro can be used to split code into ANSI and K&R sections. #if defined() && extern int getopt(int, char * const *, const char *); #else extern int getopt(); #endif In the above example, a prototype is used in a function declaration for ANSI compliant implementations, while an obsolescent non-prototype declaration is used otherwise. Those are still ANSI-compliant as of C99. Note how this code checks both definition and evaluation: this is because some implementations may set to zero to indicate non-ANSI compliance. Compiler support List of compilers supporting ANSI C: Amsterdam Compiler Kit (C K&R and C89/90) ARM RealView Clang, using LLVM backend GCC (full C89/90, C99 and C11) HP C/ANSI C compiler (C89 and C99) IBM XL C/C++ (C11, starting with version 12.1) Intel's ICC LabWindows/CVI LCC OpenWatcom (C89/90 and some C99) Microsoft Visual C++ (C89/90 and some C99) Pelles C (C99 and C11. Windows only.) vbcc (C89/90 and C99) Tiny C Compiler (C89/90 and some C99) Oracle Developer Studio See also Behavioral Description Language Compatibility of C and C++ C++23, C++20, C++17, C++14, C++11, C++03, C++98, versions of the C++ programming language standard C++ Technical Report 1 References Further reading External links ISO C working group Draft ANSI C Standard (ANSI X3J11/88-090) (May 13, 1988), Third Public Review Draft ANSI C Rationale (ANSI X3J11/88-151) (Nov 18, 1988) C Information Bulletin #1 (ANSI X3J11/93-007) (May 27, 1992) ANSI C Yacc grammar ANSI C grammar, Lex specification