如何使Pro * C适应#warning指令?
当我尝试预编译包含#warning指令的* .pc文件时,出现以下错误:
PCC-S-02014, Encountered the symbol "warning" when expecting one of the following: (bla bla bla).
如果Pro * C不知道如何处理,我可以说服他们忽略它吗?我无法删除#warning
指令,因为它在无法更改且必须包含的头文件中使用。
解决方案
回答
你不能Pro * C仅知道#if和#include。我最好的建议是在构建过程中对文件进行预处理,以删除Pro * C不喜欢的内容。就像是
grep -v -E '^#(warning|pragma|define)' unchangeable.h >unchangeable.pc.h
我的其他建议是避免Pro * C的可恶性,但我想我们会坚持下去...
回答
根据Pro * C / C ++程序员指南(第5章"高级主题"),Pro * C默默地忽略了许多预处理程序指令,包括#error和#pragma,但遗憾的是没有#warning。由于警告指令包含在头文件中,因此我们可以使用ORA_PROC宏:
#ifndef ORA_PROC #include <irrelevant.h> #endif
由于某种原因,如果我们尝试以这种方式隐藏直线警告,则Pro * C会出错。
回答
乔恩斯·埃里克森斯的答案是正确的。
在第二种情况下,我们可能需要使用该技巧。
Pro * c的某些版本无法处理没有文件扩展名的包含文件。
ORA_PROC常数也是解决该问题的一种可行方法。
回答
/ 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 =。包括= / 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版发布于2008年12月2日14:05:38
Oracle Corporation版权所有(c)1982、2002. 版权所有。
系统默认选项值取自:/oracle/Ora92/precomp/admin/pcscfg.cfg
第135行第2列,文件/usr/include/standards.h的语法错误:
在/usr/include/standards.h文件中的第2行第135行出错
.1
PCC-S-02014,在预期出现以下情况之一时遇到符号"警告"
G:
一个数字常量,换行符,定义,省略号,否则,结束号,
错误,如果ifdef,ifndef,include,line,pragma,undef,
立即预处理程序命令,C令牌,
用符号"换行"代替"警告"以继续。
bic.pc文件第30行第7列的语法错误:
文件bic.pc中的第30行第7列错误
文件FP;
...... 1
PCC-S-02201,在遇到以下情况之一时遇到符号"":
; ,=([
符号";"被替换为" *"以继续。
bic.pc文件中第0行第0列错误
PCC-F-02102,执行C预处理时出现致命错误
回答
从/usr/include/standards.h中删除以下两行
回答
与proc一起使用选项parse = none