Как заставить Pro * C справиться с директивами #warning? - PullRequest
3 голосов
/ 18 августа 2008

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

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

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

Ответы [ 7 ]

4 голосов
/ 23 августа 2008

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

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

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

1 голос
/ 12 октября 2010

используйте опцию parse=none с proc

0 голосов
/ 19 января 2011

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

0 голосов
/ 27 июня 2009

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

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

еще

0 голосов
/ 03 декабря 2008

/ 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 = bic include =. 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 в заголовках.

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

числовая константа, перевод строки, определение, elif, else, endif, ошибка, если ifdef, ifndef, include, строка, прагма, undef, немедленная команда препроцессора, токен C, Символ «новая строка» был заменен на «предупреждение» для продолжения.

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

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

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

0 голосов
/ 16 сентября 2008

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

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

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

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

0 голосов
/ 18 августа 2008

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

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

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

...