gpt4 book ai didi

c++ - PCC-F-02102,在 AIX 5.3 中进行 C 预处理时出现 fatal error

转载 作者:行者123 更新时间:2023-11-28 08:00:11 24 4
gpt4 key购买 nike

Oracle version - 10.2.0.1.0
Pro*C/C++: Release 10.2.0.1.0
AIX version - 5.3

我无法编译并出现以下错误。

Syntax error at line 135, column 2, file /usr/include/standards.h:
Error at line 135, column 2 in file /usr/include/standards.h
#warning The -qdfp option is required to process DFP code in headers.
.1
PCC-S-02014, Encountered the symbol "warning" when expecting one of the following:

a numeric constant, newline, define, elif, else, endif,
error, if, ifdef, ifndef, include, line, pragma, undef,
an immediate preprocessor command, a C token,
The symbol "newline," was substituted for "warning" to continue.

Syntax error at line 382, column 3, file mydb.h:
Error at line 382, column 3 in file mydb.h
time_t timestamp;
..1
PCC-S-02201, Encountered the symbol "time_t" when expecting one of the following
:

} char, const, double, enum, float, int, long, ulong_varchar,
OCIBFileLocator OCIBlobLocator, OCIClobLocator, OCIDateTime,
OCIExtProcContext, OCIInterval, OCIRowid, OCIDate, OCINumber,
OCIRaw, OCIString, short, signed, sql_context, sql_cursor,
struct, union, unsigned, utext, uvarchar, varchar, void,
volatile, a typedef name,
The symbol "enum," was substituted for "time_t" to continue.

Error at line 0, column 0 in file my_db.pc
PCC-F-02102, Fatal error while doing C preprocessing
make: *** [libdb.a] Error 1

有什么解决办法吗?

pcscfg.cfg

sys_include=(/usr/include)

CODE=ANSI_C
parse=partial
sqlcheck=full
sys_include=/usr/include
sys_include=/usr/include/sys
sys_include=/usr/include/linux
include=$(ORACLE_HOME)/precomp/public
include=$(ORACLE_HOME)/precomp/include
include=$(ORACLE_HOME)/oracore/include
include=$(ORACLE_HOME)/oracore/public
include=$(ORACLE_HOME)/rdbms/include
include=$(ORACLE_HOME)/rdbms/public
include=$(ORACLE_HOME)/rdbms/demo

ltype=short
define=__64BIT__
define=_IBM_C
define=_LONG_LONG

完全相同的代码在 AIX 5.2 中没有问题。问题出现在 AIX 5.3 中。

最佳答案

报告的第一个错误 PCC-S-02014 实际上是重要的错误。 Pro*C 预编译器忽略一些 C 预处理器指令,但不是 #warning - 它不理解它,并且不认为 warning 是一个有效的东西一个#

您可以使用 ORA_PROC 宏来避免在此阶段包含有问题的头文件。假设先前答案中给出的位置是正确的,您可以像这样从预处理器中“隐藏”#include:

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

当然,您可能不会直接包含该文件,因此您可能必须计算出层次结构以查看您真正需要在源文件中排除哪个文件。在您的情况下,您似乎可以将 mydb.h 隐藏在 my_db.pc 文件中,但这似乎过分了;最好将 standard.h 隐藏在您的 mydb.h 文件中 - 基本上排除您可以排除的最少代码量。不过,我根据错误消息推测,您可能有更多层。

这包含在 advanced topics 中Pro*C/C++ 文档的一部分。

这比复制和编辑系统头文件更容易,也比编辑原始文件安全得多。当然,它还允许您添加注释来解释正在发生的事情。

关于c++ - PCC-F-02102,在 AIX 5.3 中进行 C 预处理时出现 fatal error ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11680377/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com