3

.ppcライブラリファイルをgccが使用できる.cファイルに変換するproCを使用してデータベースライブラリをコンパイルしています。しかし、私は次のようなプロ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

toPARSEの param を変更します。より緩和された C 構文解析が使用されるため、Pro*C は、理解できない C 構文について愚痴をこぼしません。$ORACLE_HOME/precomp/admin/pcscfg.cfgPARTIAL

于 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 に答える