【问题标题】:What is the version of C used in gccgcc中使用的C版本是什么
【发布时间】:2014-04-16 01:50:52
【问题描述】:

GCC 中使用的 C 版本是什么? C99、C11 还是 C90?我以为是 GCC 使用 C99 但我弄错了:

for(int i = 0; i < 100; i++){
  ...
}

错误:“for”循环初始声明只允许在 C99 模式下使用。

【问题讨论】:

  • 如果需要 C99,请使用 gcc -std=c99

标签: c gcc


【解决方案1】:

根据2 Language Standards Supported by GCC

如果没有给出C语言方言选项,默认是-std=gnu90;这将在未来的某个版本中更改为 -std=gnu11

【讨论】:

    【解决方案2】:

    我相信默认是-std=gnu90。您可以在编译器标志中指定 -std=c99 来支持这一点。

    【讨论】:

      【解决方案3】:

      默认情况下 gcc 使用 C90 和 GNU extension,这在 gcc 文档 Language Standards Supported by GCC 中都有介绍,其标志是 -std=gnu90

      如果没有给出 C 语言方言选项,则默认为 -std=gnu90;这旨在在将来的某个版本中更改为 -std=gnu11。

      如果你想要 C99 支持而不应该使用 -std=c99,虽然这并不意味着 gcc 不会使用扩展,所以如果你想在 gcc 使用扩展时收到警告,你需要添加 @987654329 @ 和 -pedantic-errors 将其变为错误:

      要获得标准要求的所有诊断,您还应该指定 -pedantic(或 -pedantic-errors,如果您希望它们是错误而不是警告)

      【讨论】:

        【解决方案4】:

        使用 -std=99

        在 C99 之前,您必须在块的开头定义局部变量。 C99 引入了 C++ 特性,可以将局部变量定义与指令混合,并且可以在 for 和 while 控制表达式中定义变量。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-07-12
          • 1970-01-01
          • 1970-01-01
          • 2021-09-22
          • 2010-11-22
          • 2011-04-30
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多