Сведения о вопросе

Killer

14:32, 21st August, 2020

Теги

c   oracle   oracle-pro-c    

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

Просмотров: 428   Ответов: 6

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

PCC-S-02014, столкнулся с символом "warning", когда ожидал одного из следующих действий: (бла-бла-бла).

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



  Сведения об ответе

dump

01:29, 21st August, 2020

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

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

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


  Сведения об ответе

screen

17:57, 26th August, 2020

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


  Сведения об ответе

DINO

22:12, 24th August, 2020

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

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

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


  Сведения об ответе

SEEYOU

21:06, 1st October, 2020

Жон Егісѕопѕбыл ответ является правильным.

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

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

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


  Сведения об ответе

ITSME

22:58, 3rd August, 2020

/bin/make -Ф /css/hwmig/pcprg/proc9i32.mk PROCFLAGS="sqlcheck=SEMANTICS userid=cssd/india09" PCCSRC=Бик I_SYM=включить= пц1 proc sqlcheck=SEMANTICS userid=cssd/india09 iname=bic include=. включить=/oracle/Ora92/precomp/public включать=/oracle/Ora92/rdbms/public включать=/oracle/Ora92/rdbms/demo включать=/oracle/Ora92/plsql/public включать=/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, столкнувшись с символом "warning" при ожидании одного из следующих событий г:

числовая константа, новая строка, define, elif, else, endif, ошибка, если, условной, ifndef, включите, линия, ПРАГМА, фдоон, немедленная команда препроцессора, токен C, Символ "newline," был заменен символом "warning" для продолжения.

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

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

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


  Сведения об ответе

park

15:39, 9th August, 2020

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

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

еще


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться