【问题标题】:Silence the warning: `Non-conforming tab character` in gfortran使警告静音:fortran 中的“不符合的制表符”
【发布时间】:2015-08-13 11:45:58
【问题描述】:

我通常使用ifort 运行我的代码,但在实施过程中,我更喜欢使用gfortran 进行编译和测试,因为我发现它比英特尔对应的要严格得多。

在打开 -Wall 等编译选项时,我收到以下警告:

Warning: Nonconforming tab character at (1)

有没有办法在使用相同的编译选项时消除这个特定的警告?请注意,我确实 想用空格字符替换制表符。如果没有办法解决这个问题,那么回答“不,这不可能”就足够了。

【问题讨论】:

  • | grep -v "Nonconforming tab character"

标签: fortran gfortran


【解决方案1】:

警告:我最初写的以下答案仅适用于 gfortran 4.x。该行为在 5.x 版本中已被逆转,请参阅 the answer by DrOli


到目前为止,您尝试过什么? -Wtabs 有帮助吗?来自man gfortran

-Wtabs

默认情况下,制表符被接受为空格,但制表符不是 Fortran 字符集的成员。对于续行,支持制表符后跟 1 到 9 之间的数字。 -Wno-tabs 如果遇到选项卡,将导致发出警告。注意,-Wno-tabs 对 -pedantic、-std=f95、-std=f2003、-std=f2008 和 -Wall 有效。

-Wall 设置-Wno-tabs

如果它没有帮助,它仍然可能是 -Wall 覆盖了这个选项。然后你可以尝试手动设置-Wall,不带标签部分:

-墙

启用与我们建议避免且我们认为很容易避免的用法相关的常用警告选项。这目前包括 -Waliasing、-Wampersand、-Wconversion、 -Wsurprising、-Wc-binding-type、-Wintrinsics-std、-Wno-tabs、-Wintrinsic-shadow、-Wline-truncation、-Wtarget-lifetime、-Wreal-q-constant 和 -Wunused。

【讨论】:

  • 在您的答案中添加一点,-Wall 不会覆盖 -Wtabs 选项,但 -pedantic 会。
  • 感谢您的反馈:) 这实际上是我对pedantic 的期望:你用它来强制标准行为,所以它不应该允许标签。
【解决方案2】:

更新:使用 GCC/gFortran 5xx(我注意到使用 5.3.0),-Wtabs 的使用已经“逆转”,正如他们所说,“变得更明智”。

请看这里 (https://gcc.gnu.org/gcc-5/changes.html)

现在 -Wtabs 会给出不合格警告,而 -Wno-tabs 会关闭警告(即与之前的用法相反)。

【讨论】:

  • 哇,有趣的转折点:)感谢您的发现,我编辑了我的答案,注意到它只适用于 4.x,并且您的答案涵盖了 5.x。下次请随时对部分不正确的答案发表评论,了解每个答案的局限性很重要。
【解决方案3】:

在 gfortran 4.x 版本中消除警告的最简单方法是覆盖 -Wall 标志设置的 -Wno-tabs 标志。所以首先包括 -Wall 然后是 -Wtabs

-Wall -Wtabs

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-27
    • 2022-12-18
    • 2012-06-11
    • 2019-05-26
    • 1970-01-01
    相关资源
    最近更新 更多