문제

Pro로 데이터베이스 라이브러리를 컴파일하고 있습니다.ppc 라이브러리 파일을 GCC가 사용할 수있는 .c 파일로 변환하는 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 10 시스템으로 업그레이드하는 오래된 Solaris 시스템에서 나 왔으며 헤더 파일은 이러한 기호를 사용하지 않는 것 같습니다. 예를 들어 최신 .H 파일은 있습니다

typedef __builtin_va_list va_list

기존 .H 파일은 있습니다

typedef void* va_list

이와 같은 많은 것들이 있으므로 나는 타입을 사용하여 모두 수동으로 고치기를 꺼려합니다.

도움이 되었습니까?

해결책

변화 PARSE 당신의 파라 $ORACLE_HOME/precomp/admin/pcscfg.cfg 에게 PARTIAL - 더 편안한 C 파싱을 사용하므로 Pro*C는 이해하지 못하는 C 구문에 대해 암시하지 않습니다.

다른 팁

이 사전 처리기 지침을 포함시킴으로써이를 달성 할 수 있습니다. 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 비트 유형을 정의 할 수 없으므로 작동하도록 직접 정의합니다. 우리의 프로젝트는 SPARC 용 Solaris 9에 있으며 GCC 3.3.1 및 GCC 3.4.2로 컴파일하며 Oracle 10G를 사용합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top