gpt4 book ai didi

c - C、C99、ANSI C 和 GNU C 之间有什么区别?

转载 作者:太空狗 更新时间:2023-10-29 16:14:38 25 4
gpt4 key购买 nike

我已经在 codechef 上开始了编程练习并被 弄糊涂了C和C99的区别。 C在这里是什么意思?是C89吗? 查看this submit底部的语言.它包含 C 和 C99。

我在互联网上找到了一个叫做 GNU C 的东西。 linux/unix 系统有没有不同的 C?这些是否符合 ANSI 的 C 标准?我也在一些地方读过“C99严格”。这是什么?

是否还有其他不同的 C 标准在使用?有没有叫做 C 4.3.2 的东西,还是当前使用的 gcc 版本?

编辑:

This , This , This有帮助。我会搜索更多并编辑未回答的内容。

我不是编程新手。我知道什么是C语言。我知道 ANSI 有不同的 C 标准,如 C89、C99 和 C11。

最佳答案

  • 标准化之前的一切一般都被称为“K&R C”,以著名著作( 1st edition2nd edition )的名字命名,C 语言的发明者 Dennis Ritchie 是作者之一。这就是 1972-1989 年的“C 语言”。
  • 第一个 C 标准于 1989 年在美国全国发布,由其国家标准机构 ANSI 发布。此版本称为 C89 或 ANSI-C。从 1989 年到 1990 年,这是“C 语言”。
  • 次年,美国标准被国际接受并由 ISO (ISO 9899:1990) 发布。此版本称为 C90。从技术上讲,它与 C89/ANSI-C 的标准相同。正式地,它取代了 C89/ANSI-C,使它们过时了。从 1990 年到 1999 年,C90 是“C 语言”。
    请注意,自 1989 年以来,ANSI 与 C 语言没有任何关系。仍在谈论“ANSI C”的程序员通常不知道它的含义。 ISO 通过标准 ISO 9899“拥有”C 语言。
  • 1995 年发布了一个小更新,有时称为“C95”。这不是重大修订,而是正式命名为 ISO/IEC 9899:1990/Amd.1:1995 的技术修订。主要的变化是引入了广泛的字符支持。
  • 1999 年,C 标准进行了重大修订(ISO 9899:1999)。该版本的标准称为 C99。从 1999 年到 2011 年,这是“C 语言”。
  • 2011 年,C 标准再次更改(ISO 9899:2011)。此版本称为 C11。各种新功能,如 _Generic , _Static_assert和线程支持被添加到语言中。该更新非常关注多核、多处理和表达排序。从 2011 年到 2017 年,这是“C 语言”。
  • 2017年修订C11,解决各种缺陷报告。该标准非正式地称为 C17 或 C18。它于 2017 年完成(并使用 __STDC_VERSION__ = 201710L)但由 ISO 发布为 9899:2018,因此 C17/C18 之间存在歧义。它不包含任何新功能,只是更正。它是 C 语言的当前版本。

  • “C99 严格”可能是指编译器设置强制编译器通过字母遵循标准。在 C 标准中有一个术语符合实现。本质上它的意思是:“这个编译器实际上正确地实现了 C 语言”。正确实现 C 语言的程序正式称为严格符合程序。
    “GNU C”可能意味着两件事。作为 GNU 编译器集合 (GCC) 的一部分的 C 编译器本身。或者它可能意味着 GCC C 编译器使用的非标准默认设置。如果你用 gcc program.c 编译那么您就不会根据 C 标准进行编译,而是根据非标准的 GNU 设置进行编译,这可能被称为“GNU C”。例如,整个 Linux 内核是用非标准的 GNU C 编写的,而不是用标准的 C 编写的。
    如果你想按照 C 标准编译你的程序,你应该输入 gcc -std=c99 -pedantic-errors .如果您的 GCC 版本支持 c11,请将 c99 替换为 c11。

    关于c - C、C99、ANSI C 和 GNU C 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17206568/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com