3

我正在用 pro C 编译一个数据库库,它将 .ppc 库文件转换为 gcc 可以使用的 .c 文件。但是,我在 pro C 中遇到了很多错误,如下所示

   PCC-S-02201, Encountered the symbol
"__ attribute__ " when expecting one of
the `following`

... 

   , Encountered the symbol
"__builtin_va_list" when expecting one of
the `following`

缺少的符号来自标准链,包括 stdio.h 和 stdlib.h。我该如何解决这个问题?

我正在编译的库来自我们现在正在升级的旧 solaris 系统(到新的 solaris 10 系统),并且头文件似乎没有使用这些符号。例如较新的 .h 文件有

typedef __builtin_va_list va_list

而旧的 .h 文件有

typedef void* va_list

有很多这样的事情,所以我不愿意用 typedef 手动修复所有这些

4

2 回答 2

4

PARSE将参数更改$ORACLE_HOME/precomp/admin/pcscfg.cfgPARTIAL- 它将使用更轻松的 C 解析,因此 Pro*C 不会对它不理解的 C 语法感到厌烦。

于 2010-03-18T09:27:39.683 回答
0

您也可以通过包含此预处理器指令来实现它。Pro*C 评估宏并替换它们

#ifdef ORA_PROC
#define __attribute__(x) 
#endif

我实际上在家里,无法准确验证它在我们的代码库中是如何定义的,我会检查并完成它,但它就像上面一样。

更新:所以我们在项目中使用的确切代码是:

#if defined(ORA_PROC) || !defined(__GNUC__)
#define __attribute__(x)
typedef unsigned long long uint64_t;
typedef          long long  int64_t;
#define INLINE
#endif

由于未知原因,预处理器无法定义 64 位类型,所以我直接定义它们以便它工作。我们的项目在 Solaris 9 for SPARC 上,我们使用 GCC 3.3.1 和 GCC 3.4.2 进行编译,我们使用 Oracle 10g

于 2010-03-18T18:08:54.050 回答