我通常使用ifort
运行我的代码,但在实现过程中,我更喜欢使用gfortran
进行编译和测试,因为我发现它比英特尔版本要严格得多。
在启用-Wall
等编译选项时,我收到以下警告:
Warning: Nonconforming tab character at (1)
在使用相同的编译选项时,有没有办法让这个特定的警告静音?请注意,我 NOT 想要用空格字符替换制表符。如果没有办法解决这个问题,那么答案就是“不可能"就够了。
答案 0 :(得分:8)
警告 :我最初写的以下答案仅适用于gfortran 4.x.版本5.x中的行为已被撤消,请参阅the answer by user3024046。
到目前为止你尝试了什么? -Wtabs
有帮助吗?来自man gfortran
:
-Wtabs
默认情况下,选项卡被接受为空格,但选项卡不是Fortran字符集的成员。对于延续线,支持选项卡后跟1到9之间的数字。 -Wno-标签 如果遇到标签,将导致发出警告。注意,-Wno-tabs对于-pedantic是活动的,-std = f95,-std = f2003,-std = f2008和-Wall。
-Wall
设置-Wno-tabs
。
如果它没有帮助,那么-Wall
可能仍会覆盖此选项。然后,您可以尝试手动设置-Wall
而不使用标签部分:
-Wall
启用与我们建议避免的用法相关的常用警告选项,我们认为这些选项很容易避免。目前包括-Waliasing,-Wampersand,-Wconversion, -Wsurprising,-Wc-binding-type,-Wintrinsics-std,-Wno-tabs,-Wintrinsic-shadow,-Wline-truncation,-Wtarget-lifetime,-Wreal-q-constant和-Wunused。
答案 1 :(得分:3)
更新:使用GCC / gFortran 5xx(我注意到5.3.0),-Wtabs使用已被“逆转”,正如他们所说,“更加明智”。
见这里(https://gcc.gnu.org/gcc-5/changes.html)
现在-Wtabs会发出不合格的警告,而-Wno-tabs会关闭警告(即与之前的用法相反)。
答案 2 :(得分:0)
在gfortran版本4.x中删除警告的最简单方法是覆盖-Wall标志设置的-Wno-tabs标志。首先包括-Wall然后-Wtabs
-Wall -Wtabs