摆脱“警告:取消引用类型 - 惩罚指针”

时间:2012-03-16 09:18:03

标签: gcc cobol gnucobol

我正在使用简单的Hello World示例尝试OpenCobol。

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
PROCEDURE DIVISION.
    DISPLAY "Hello World".
    STOP RUN.

我用

编译
cobc -x -free -o hello hello.cbl

获得可行的可执行文件,但也有很多来自gcc的警告

warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]

从Google搜索中我可以发现,我显然可以忽略这些而不会产生不良影响。但由于各种原因,我想真正摆脱它们,如果没有别的,那么至少以某种方式压制它们。我怎么能这样做?

4 个答案:

答案 0 :(得分:3)

使用-O降低优化效果。

我原本预计这会被应用于C代码生成,而不会传递给gcc。

如果您更喜欢绝对控制gcc,

编写一个脚本来包装你的构建。 (传递1)从cobc生成翻译的C代码。 (传递2)使用gcc编译(使用较小的优化)。 在一个大型项目中,您可以嵌套脚本以进行完整构建ala make。

答案 1 :(得分:1)

原谅已故的笔记;

为了控制C编译阶段,OpenCOBOL在构建链中尊重一些环境变量。

请参阅http://opencobol.add1tocobol.com/#does-opencobol-work-with-llvm以获取列表,包括COB_CFLAGS和COB_LDFLAGS

答案 2 :(得分:0)

this OpenCobol forum thread起,您似乎需要使用-fno-strict-aliasing选项。不能在这里试试,因为我们不使用OpenCobol。

答案 3 :(得分:-1)

在幕后的某个地方,你正在调用gcc编译器。尝试设置编译器选项以关闭警告as described here

该选项应如下所示:-Wno-strict