History of C Language

C programming language was developed to overcome the difficulties found in older programming languages such as BCPL, BASIC, B, etc.

Here are the lists of programming languages that were developed with or before C:

LanguageYearDeveloped By
Algol1960International Group
BCPL1967Martin Richard
B1970Ken Thompson
Traditional C1972Dennis Ritchie
K&R C1978Kernighan & Dennis Ritchie
ANSI C1989ANSI Committee
ANSI/ISO C1990ISO Committee
C991999Standardization Committee

C语言版本更迭

年份C标准通用名别名标准编译选项GNU扩展选项
1972Birth C----
1978K&R C----
1989-1990X3.159-1989,
ISO/IEC 9899:1990
C89C90,
ANSI C,
ISO C
-ansi,
-std=c90,
-std=iso9899:1990
-std=gnu90
1995ISO/IEC 9899/AMD1:1995AMD1C94,
C95
-std=iso9899:199409-
1999ISO/IEC 9899:1999C99--std=c99, -std=iso9899:1999-std=gnu99
2011ISO/IEC 9899:2011C11--std=c11, -std=iso9899:2011-std=gnu11
2018ISO/IEC 9899:2018C18--std=c18, -std=iso9899:2018-std=gnu18

ANSI C==C89==C90

ANSI C standard==X3.159-1989 1989年批准通过;
1990年发布;
后被批准为ISO标准:ISO/IEC 9899:1990
常叫做:C89
偶尔被叫做:C90
GCC中指定此版本所用参数时,有三种写法:

  • -ansi
  • -std=c90
  • -std=iso9899:1990

此C90后来在1994年,1996年,先后发布过对应的勘误表;

AMD1==C94==C95

1995年,针对之前1900年发布的标准,发布了一个修订版;
添加了一个有向图(digraphs)和宏:STDC_VERSION
此标准,常被叫做:AMD1
有时候被叫做:C94或C95
GCC中指定此版本时所用参数:

  • -std=iso9899:199409

C99

1999年又发布了新标准:ISO/IEC 9899:1999
常被叫做:C99
此C99标准未完成之前的草案,被叫做:C9X
GCC中指定此版本时所用参数有两种写法:

  • -std=c99
  • -std=iso9899:1999

此C99后来在2001年,2004年和2007年,先后发布过对应的勘误表;

C11

2011年发布了新标准:ISO/IEC 9899:2011 GCC中指定此版本时所用参数有两种写法:

  • -std=c11
  • -std=iso9899:2011

此C11标准未完成之前的草案,被叫做:C1X

C18

C18没有引入新的语言特性,只对C11进行了补充和修正。

  • -std=c17
  • -std=iso9899:2018

C++版本更迭

年份C++标准通用名别名标准编译选项GNU扩展选项
1978C with Classes----
1998ISO/IEC 14882:1998C++98--std=c++98-std=gnu++98
2003ISO/IEC 14882:2003C++03--std=c++03-std=gnu++03
2011ISO/IEC 14882:2011C++11C++0xstd=c++11,
std=c++0x
std=gnu++11,
std=gnu++0x
2014ISO/IEC 14882:2014C++14C++1ystd=c++14,
std=c++1y
std=gnu++14,
std=gnu++1y
2017ISO/IEC 14882:2017C++17C++1zstd=c++17,
std=c++1z
std=gnu++17,
std=gnu++1z
2020to be determinedC++20C++2a-std=c++2astd=gnu++2a

wikipedia - C(programming language)
History of C Language
C/C++版本更迭历程
wikipedia - C18(C标准修订版)