【问题标题】:GCC on windows linux bashWindows linux bash 上的 GCC
【发布时间】:2016-10-01 15:53:03
【问题描述】:

我正在通过 windows linux bash 使用 ubuntu,碰巧我正在尝试编译一个文件,我收到了这个错误:

"error: ‘for’ loop initial declarations are only allowed in C99 mode". 

但实际上我不想使用 C99 模式,而是使用 C11。如何将我的编译器设置为默认使用 C11 模式而无需传递任何标志?

我的 GCC 版本是 4.8.4,在 ubuntu 14.04.3 上运行。

谢谢。

【问题讨论】:

  • 使用-std=c11
  • @KerrekSB 我知道它可以工作,但我想改为默认设置!
  • 使用所需的默认值重新编译 GCC。

标签: c linux bash gcc


【解决方案1】:

您需要指定 -std=c99-std=gnu99 或更高版本以允许在 for 循环中进行初始声明。或者,只是先声明变量,然后在 for 循环中使用它。

当然,对于 c11,-std=c11 是一种方式。我不知道设置此默认值的方法,也许没有办法。但是最近gcc compilers 5.x have c11 default

【讨论】:

  • 如何将 gcc 更新到 5+ 版本?我尝试了 sudo apt-get update 但它似乎已更新。
  • 安装像 Arch Linux 这样的优秀发行版,忘记不兼容的包或包管理器的类似问题。
【解决方案2】:

替代自己重新构建 GCC(复杂且容易出错),更新 GCC(较新的 GCC 可能无法编译内核,内核开发人员和 GCC 开发人员并非总是如此,我该怎么说。 .. d'accord)并每次输入-std=c11,您可以设置别名。将以下行放在 .bashrc 的末尾

alias gcc11="gcc -std=c11"

让 shell 通过source ~/.bashrc 重新读取它的配置文件(如果我没记错 Ubuntu)并尝试一下。

您也可以调用别名 gcc,但这可能会破坏第 3 方 makefile。

【讨论】:

    猜你喜欢
    • 2013-11-02
    • 2010-10-06
    • 2020-06-13
    • 1970-01-01
    • 2017-03-29
    • 1970-01-01
    • 2014-03-26
    • 2016-08-28
    • 1970-01-01
    相关资源
    最近更新 更多