Как заставить Pro * C справиться с директивами #warning?

Когда я пытаюсь предварительно скомпилировать файл * .pc, содержащий директиву #warning, я получаю следующую ошибку:

PCC-S-02014, Обнаружен символ «предупреждение» при ожидании одного из следующего: (бла бла бла).

Могу ли я как-то убедить Pro * C игнорировать эту вещь, если она не знает, что с ней делать? Я не могу удалить #warningдирективу, так как она используется в заголовочном файле, который я не могу изменить и должен включить.

18.08.2008 14:32:41
7 ОТВЕТОВ
РЕШЕНИЕ

Согласно Руководству для программиста Pro * C / C ++ (глава 5 «Расширенные темы»), Pro * C молча игнорирует ряд директив препроцессора, включая #error и #pragma, но, к сожалению, не #warning. Поскольку ваши директивы предупреждения включены в заголовочный файл, вы можете использовать макрос ORA_PROC:

#ifndef  ORA_PROC
#include <irrelevant.h>
#endif

Однако по какой-то причине Pro * C выдает ошибку, если вы пытаетесь скрыть прямое предупреждение таким образом.

5
22.08.2008 21:44:00

Ты не можешь Pro * C знает только #if и #include. Мой лучший совет - предварительно обработать файл как часть процесса сборки, чтобы удалить то, что Pro * C не понравится. Что-то типа

grep -v -E '^#(warning|pragma|define)' unchangeable.h >unchangeable.pc.h

Мой другой совет - избегать мерзости Pro * C, но, думаю, вы застряли с ней ...

0
18.08.2008 17:54:54

Jons Ericsons ответ правильный.

Есть второе обстоятельство, когда вам может понадобиться использовать этот трюк.

Некоторые версии Pro * c не могут работать с включаемыми файлами, которые не имеют расширения.

Константа ORA_PROC также является одним из возможных решений этой проблемы.

0
22.10.2008 21:20:40

/ bin / make -f /css/hwmig/pcprg/proc9i32.mk PROCFLAGS = "sqlcheck = SEMANTICS userid = cssd / india09" PCCSRC = bic I_SYM = include = pc1 proc sqlcheck = SEMANTICS userid = cssd / india09 iname = b , include = / oracle / Ora92 / precomp / public include = / oracle / Ora92 / rdbms / public include = / oracle / Ora92 / rdbms / demo include = / oracle / Ora92 / plsql / public include = / oracle / Ora92 / network / public

Pro * C / C ++: выпуск 9.2.0.6.0 - выпуск 2 декабря 14:05:38 2008

Copyright (c) 1982, 2002, Oracle Corporation. Все права защищены.

Системные значения параметров по умолчанию взяты из: /oracle/Ora92/precomp/admin/pcscfg.cfg

Синтаксическая ошибка в строке 135, столбец 2, файл /usr/include/standards.h: ошибка в строке 135, столбец 2 в файле /usr/include/standards.h

предупреждение Параметр -qdfp необходим для обработки кода DFP в заголовках.

.1 PCC-S-02014, Обнаружен символ «предупреждение» при ожидании одного из следующих действий:

числовая константа, символ новой строки, определение, elif, else, endif, error, если ifdef, ifndef, include, line, pragma, undef, немедленная команда препроцессора, токен C, символ «newline» был заменен на «предупреждение» " продолжать.

Синтаксическая ошибка в строке 30, столбец 7, файл bic.pc: Ошибка в строке 30, столбец 7 в файле bic.pc FILE fp; ...... 1 PCC-S-02201, Обнаружен символ " " при ожидании одного из следующего:

; , = ([Символ ";" был заменен на "*" для продолжения.

Ошибка в строке 0, столбец 0 в файле bic.pc PCC-F-02102, Неустранимая ошибка при предварительной обработке C

0
3.12.2008 06:59:30

Удалить ниже две строки из /usr/include/standards.h

предупреждение Параметр -qdfp необходим для обработки кода DFP в заголовках.

еще

-1
26.06.2009 21:47:16

использовать опцию parse=noneс процедурой

1
10.12.2012 03:49:07

Изменить /usr/include/standards.h.
Удалить строку #warning The -qdfp option is required to process DFP code in headers. Proc не поддерживает #warning, просто #else #ifи т. Д.

-2
26.11.2011 22:32:29
Это АБСОЛЮТНО ПОЗИТИВНО НЕПРАВИЛЬНЫЙ ОТВЕТ . Вы НИКОГДА не должны ни при каких обстоятельствах изменять системные заголовки, чтобы исправить ошибку приложения.
Daniel Ruoso 26.01.2012 16:16:54