【问题标题】:compile C code with no flag other than -o编译除了 -o 之外没有标志的 C 代码
【发布时间】:2020-09-30 15:09:40
【问题描述】:

我正在做一个作业,并且需求指令说“你的代码应该正确编译(没有警告和错误),没有其他标志。你应该将你的代码编译为可调试的可执行文件,而不会产生任何警告或错误消息。 (注意 -O 和 -o 是不同的标志。)"

所以我很困惑“no flags other -o”是什么意思。据我所知,“flag 是一种用于基本信号和识别的通用工具,尤其是在通信同样具有挑战性的环境中。”,那么这个要求是否意味着我们不能使用任何 for 循环?

【问题讨论】:

  • 它们是编译器的标志,例如 gcc。你可以看到一个完整的列表online
  • flags 是您提供给编译器的选项,例如-ofor gcc 允许指示目标可执行文件/二进制文件/...。请注意,该语句很奇怪,因为请求可调试的可执行文件,这通常意味着一个选项,例如用于 gcc 的 -g,因此似乎仅与 -o 不兼容
  • "flag" 在这种情况下是编译器调用的命令行参数。所以:不要使用任何你需要指定输出文件的东西。
  • 在这种情况下,标志是命令行选项,所以讲师说你可以使用-o(破折号哦)选项到gcc,但不能使用其他选项。您可以在程序中使用任何您喜欢的 C 语言结构。
  • 你确认编译器是 gcc 吗?如果是,我鼓励您使用-Wall 进行编译以强制执行问题检测

标签: c compiler-warnings flags


【解决方案1】:

不,要求是指命令行标志,即编译器的选项。例如,假设 gcc,gcc -o foo foo.c.

但是,由于该程序是可调试的,因此要求是矛盾的,因为创建可调试的可执行文件需要(对于 gcc)-g 标志。

【讨论】:

    【解决方案2】:

    在许多编译器上,您可以使用标志来控制警告级别。这里的要求是不使用这些标志,但不发出警告。

    换句话说,您只是被要求编写整洁 C 代码,不使用特定扩展或任何半有效 构造(代码不符合标准,但接受编译器的警告)

    【讨论】:

      猜你喜欢
      • 2018-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多