【问题标题】:How enable c99 mode in gcc with terminal如何使用终端在 gcc 中启用 c99 模式
【发布时间】:2014-10-23 08:47:33
【问题描述】:

我想在 gcc 编译器中激活 c99 模式,我在本论坛的其他帖子中读到 -std 应该等于 -std=c99 但我不知道如何使用命令行将其设置为该值,所以请帮助。

【问题讨论】:

  • 用 -std=c99 附加你的命令;)
  • 如何指定可执行文件的名称?
  • 使用命令c99来编译用C99语言编写的程序;-)

标签: c gcc c99


【解决方案1】:

编译使用:

gcc -std=c99 -o outputfile sourcefile.c

gcc --help 列出了一些选项,完整的选项列表请参考manual。 C方言的不同选项可以在here找到。

当您使用make 时,您可以使用CFLAGS 设置gcc 的命令行选项:

# sample makefile
CC = gcc
CFLAGS = -Wall -std=c99
OUTFILE = outputfile
OBJS = source.o
SRCS = source.c

$(OUTFILE): $(OBJS)
        $(CC) $(CFLAGS) -o $(OUTFILE) $(OBJS)
$(OBJS): $(SRCS)
        $(CC) $(CFLAGS) -c $(SRCS)

附录(2016 年底添加):C99 到现在已经有点老了,查看此答案的人可能想要探索 C11

【讨论】:

  • 谢谢,但这是否取代了 make,因为我总是使用 make 来编译我的所有程序?
  • @user297904 不,如果您使用生成文件,则应该在其中设置选项。我会用一个例子来更新我的答案。
  • 感谢更新最后一个问题应该写入终端或make的配置文件内部,make的配置文件在哪里?
  • @user297904 当你使用 make 时,你有一个 makefile 告诉 make 当你调用它时要做什么。我添加的示例是一个基本的 makefile,它在同一目录中编译一个名为 source.c 的 c 文件,并创建一个名为 outputfile 的可执行文件
  • 在我写这篇文章两年后,我仍然得到了一些支持,这当然很好,但可能是时候将 C99 抛在后面并转向更新的标准(即,使用 -std=c11 代替 C11 )。
【解决方案2】:

您可以尝试使用-std=c99 标志。

尝试像这样编译:

gcc -Wall -std=c99 -g myProgram.c

另请注意,-g 用于调试选项(感谢 Alter Mann 指出)。

【讨论】:

    【解决方案3】:

    根据另一个答案下的 cmets,也许您正在使用隐式 make 规则并且没有 Makefile。如果是这样,那么您只是运行make tst 以从 tst.c 生成 tst 二进制文件。在这种情况下,您可以通过设置环境变量CFLAGS 来指定标志。您可以为当前 shell 设置它,或将其添加到您的 ~/.bashrc 以始终拥有它,使用以下命令:

    export CFLAGS='-Wall -Wextra -std=c99'
    

    或者只为单个命令指定它:

    CFLAGS='-Wall -Wextra -std=c99' make tst
    

    (注意:我也添加了警告标志,你应该真正使用它们,它们会检测到很多潜在的错误或只是你应该以不同方式编写的糟糕代码。)

    【讨论】:

      猜你喜欢
      • 2011-05-13
      • 2012-02-28
      • 2016-02-03
      • 1970-01-01
      • 1970-01-01
      • 2010-09-06
      • 1970-01-01
      相关资源
      最近更新 更多