如何摆脱特定的 gfortran 警告?

How to get rid of a specific gfortran warning?

我的构建日志中经常出现一条警告消息。警告信息是:

Named COMMON block ‘<BLOCK_NAME>’ at (1) shall be of the same size as elsewhere ( <SIZE_1> vs <SIZE_2> bytes)

是否有禁止显示此消息的标志?我试过了-Wno-align-commons


注意:我想取消警告,这样我可以更轻松地发现新的警告消息。当你有数千人时更难做到。

如果您正在编译生成该警告的源代码,那么您可以访问该源代码。所以你可以修改源码,只是不想修改而已。 -Wno-align-commons 控制关于 alignment 问题的警告。这里的警告是关于大小不匹配的。你真的想要写入随机内存吗?只有一种方法可以抑制该警告,那就是使用 -w,它可以抑制所有警告。

我知道 "question" 是关于编译器标志而不是实际修复,但碰巧我只是修复了我正在清理的一些遗留代码中的警告,所以只是为了帮助别人同样的情况。

该警告警告您,公共共享内存区域在代码的不同位置具有不同的大小,如:

REAL FUNCTION SAMPLE_TASK(VAR)
REAL S1, S2
COMMON /C1/ S1, S2
....
....
REAL FUNCTION OTHER_TASK(VAR)
REAL S1, S2
COMMON /C1/ S1

所以最简单的修复方法就是去掉无用的变量或者像这样添加缺失的变量。

COMMON /C1/ S1, **S1**

希望对您有所帮助:)