【问题标题】:how to compile in c99 mode?如何在c99模式下编译?
【发布时间】:2013-09-02 15:37:20
【问题描述】:

我在windows平台,有什么办法可以在c99模式下在命令行中编译程序,不必在每条语句中输入-std=c99?我当前的 gcc 版本是 4.4.1 。

【问题讨论】:

  • 你安装了哪个GCC环境?在 POSIX 平台上可能有 c99 命令。
  • mingw32 .. 如果这就是你要找的东西。
  • 主要问题必须重写。我已经回答了-std=c99,但我不得不删除我的答案,因为 OP 想要其他东西:How to compile in C99 mode without typing -std=c99 in every statement?

标签: windows gcc command-line c99


【解决方案1】:

gcc 不提供通过例如环境变量来指定命令行参数的方法。如果您想要-std=c99 的效果,那么在某种程度上您将不得不使用该参数调用gcc 命令。

如果您从类 Unix 命令 shell(例如用于 Cygwin 的命令 shell)调用 gcc,则可能已经有一个 c99 命令。 POSIX 需要这样的命令(它将是gcc 命令的包装器)。我目前没有安装 Cygwin,所以无法检查。如果不存在,您可以定义一个 shell 函数:

c99() {
    gcc -std=c99 "$@"
}

如果您从 Windows MS-DOS 样式的命令提示符调用它,您可以创建一个名为 c99.cmd 的批处理文件,其中包含:

gcc -std=c99 %1 %2 %3 %4 %5 %6 %7 %8 %9

并将其放在您的 %PATH% 中的某个位置。

请注意,后一种方法最多只能处理 9 个命令行参数,通常就足够了。 (我认为有办法处理更多。)

如果您想在编译时捕获更多错误,当然可以添加更多参数,例如 -pedantic -Wall -Wextra。

请注意,我将命令命名为c99 而不是gcc,这样它就不会尝试递归调用自身。如果您真的希望能够以gcc 的形式调用它,您可以指定gcc 可执行文件的完整路径(您必须找出系统上的内容)。但这将使调用gcc 变得更加困难 没有额外的参数。

【讨论】:

  • 非常感谢详细的答案。 c99.cmd 方法看起来相当不错。这里的一个问题是批处理文件可以撤消吗?如果我出于某种原因想要回到 gcc 模式编译? (我是批处理文件的新手)
  • @SomjitNag:你可以删除批处理文件,或者干脆不使用它。
猜你喜欢
  • 2015-09-15
  • 2013-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-19
  • 2017-08-10
相关资源
最近更新 更多