在GCC中禁用将特定警告视为错误的正确标志或标志顺序是什么?我想为-Wimplicit-interface
做到这一点。
>cat test.f90
call s
end
> gfortran -c -Werror -Wimplicit-interface -Wno-error=implicit-interface test.f90 -o test.o
test.f90:1.7:
call s
1
Warning: Procedure 's' called with an implicit interface at (1)
>ls test*
test.f90
未生成test.o
。
没有-Werror
就行了
> gfortran -c -Wimplicit-interface -Wno-error=implicit-interface test.f90 -o test.o
test.f90:1.7:
call s
1
Warning: Procedure 's' called with an implicit interface at (1)
> ls test*
test.f90 test.o
GCC版本为gcc version 4.9.2 20141030 (Cray Inc.) (GCC)
。
答案 0 :(得分:1)
这不是问题的明确答案。我发现它足够教育,而且时间太久,不能作为评论。
正如您刚刚发现的那样,如果合并-Werror
和-Wno-error=implicit-interface
,您可能无法实现所需目标。让我解释一下:与doc中的内容相反,特别是下面的句子,
正面和负面形式的综合影响是,更具体的选项优先于不太具体的选项,与其在命令行中的位置无关。
似乎在实际实施中并非如此。我最近遇到了类似的问题,通过谷歌搜索,我发现this包含了这句话:
' -w'无论
上设置了什么特定警告,都会永久设置所有警告
它实际上建议通过使用一些非特定选项,实际实现不允许您更改非特定选项中包含的特定选项。
答案 1 :(得分:0)
正如@innoSPG指出的那样,实际行为不符合手册中的要求。
@MarkGlisse的评论显示,这已经改变了GCC 5.因此它可能是一个错误。
因此,解决方案是使用最新版本,或者不使用-Werror
和-Wimplicit-interface
之一。
或者在任何地方真正提供显式接口,但这可能会有问题,因为MPI库在mpi
模块中提供的显式接口数量不同。