如何让Pro * C应对#warning指令?

时间:2008-08-18 14:32:42

标签: c oracle oracle-pro-c

当我尝试预编译包含#warning指令的* .pc文件时,我收到以下错误:

  

PCC-S-02014,在遇到以下任何一种情况时遇到符号“警告”:( bla bla bla)。

如果它不知道如何处理它,我能以某种方式说服Pro * C忽略它吗?我无法删除#warning指令,因为它在我无法更改且必须包含的头文件中使用。

7 个答案:

答案 0 :(得分:4)

根据 Pro * C / C ++程序员指南(第5章“高级主题”),Pro * C默默地忽略了许多预处理程序指令,包括#error和#pragma,但遗憾的是没有#警告。由于警告指令包含在头文件中,因此您可以使用ORA_PROC宏:

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

出于某种原因,如果你试图以这种方式隐藏#warning,Pro * C会出错。

答案 1 :(得分:1)

使用选项parse=none和proc

答案 2 :(得分:0)

你做不到。 Pro * C只知道#if和#include。我最好的建议是在构建过程中预处理文件,以删除Pro * C不喜欢的东西。像

这样的东西
grep -v -E '^#(warning|pragma|define)' unchangeable.h >unchangeable.pc.h

我的另一个建议是避免令人憎恶的Pro * C,但我猜你已经坚持了......

答案 3 :(得分:0)

Jons Ericsons的回答是正确的。

还有第二种情况,您可能需要使用该技巧。

某些版本的Pro * c无法处理没有文件扩展名的包含文件。

ORA_PROC常量也是该问题的一个可行解决方案。

答案 4 :(得分:0)

/ 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 - 生产于2008年12月2日星期二14:05:38

版权所有(c)1982,2002,Oracle Corporation。保留所有权利。

系统默认选项值取自:/oracle/Ora92/precomp/admin/pcscfg.cfg

第135行,第2列,文件/usr/include/standards.h中的语法错误: 文件/usr/include/standards.h

中第135行第2列出错

警告需要-qdfp选项来处理标题中的DFP代码。

0.1 PCC-S-02014,当遇到其中一个时,遇到符号“警告” G:

数字常量,换行符,define,elif,else,endif,    错误,if,ifdef,ifndef,include,line,pragma,undef,    立即预处理器命令,C令牌, 符号“换行符”代替“警告”继续。

第30行,第7列,文件bic.pc的语法错误: 文件bic.pc中第30行第7列出错 文件 fp; ...... 1 PCC-S-02201,在遇到以下情况之一时遇到符号“”:

,=([ 符号“;”用“*”代替继续。

文件bic.pc中第0行第0列出错 PCC-F-02102,进行C预处理时出现致命错误

答案 5 :(得分:-1)

从/usr/include/standards.h

中删除以下两行

警告需要-qdfp选项来处理标题中的DFP代码。

否则

答案 6 :(得分:-2)

修改/usr/include/standards.h
删除行#warning The -qdfp option is required to process DFP code in headers.该行不支持#warning,只支持#else #if等。