我正在使用简单的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搜索中我可以发现,我显然可以忽略这些而不会产生不良影响。但由于各种原因,我想真正摆脱它们,如果没有别的,那么至少以某种方式压制它们。我怎么能这样做?
答案 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