Избавляемся от «Осторожно: разыменовываемый указатель типа» - PullRequest
1 голос
/ 16 марта 2012

Я опробую OpenCobol на простом примере Hello World.

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 ]

3 голосов
/ 10 октября 2012

Используйте -O, чтобы смягчить оптимизацию.

Я бы ожидал, что это применяется к генерации кода C, а не передается в gcc.

Если вы предпочитаете абсолютный контрольgcc,

Напишите скрипт для переноса вашей сборки.(проход 1) Для получения переведенного кода C из cobc.(проход 2) Для компиляции (с меньшей оптимизацией), используя gcc.В большом проекте вы можете вложить скрипты для полной сборки.

1 голос
/ 25 ноября 2012

Извините за позднюю заметку;

Для контроля над фазой компиляции C, OpenCOBOL учитывает несколько переменных среды во время цепочки сборки.

См. Список http://opencobol.add1tocobol.com/#does-opencobol-work-with-llvm,включая COB_CFLAGS и COB_LDFLAGS

0 голосов
/ 26 марта 2012

Из этой ветки форума OpenCobol похоже, вам нужно использовать опцию -fno-strict-aliasing. Не могу попробовать здесь, потому что мы не используем OpenCobol.

0 голосов
/ 16 марта 2012

Где-то под одеялом вы вызываете компилятор gcc. Попробуйте установить параметры компилятора, чтобы отключить предупреждение , как описано здесь

Опция должна выглядеть примерно так: -Wno-strict

...